GNU/Linux >> Belajar Linux >  >> Linux

Di mana Timer Cron berada?

Apakah ada cara untuk mengakses cron timer dan dapatkan sisa detik hingga eksekusi skrip berikutnya di crontab atau mungkin detik sejak terakhir?

Jawaban yang Diterima:

Tidak mudah. crond menunggu sinyal dari kernel dan pergi tidur. Saat mendapat sinyal, ia akan memeriksa apakah ada cronjob yang akan dieksekusi pada menit itu, meluncurkannya, dan kembali ke mode tidur.

Ini adalah desain yang sangat efisien – cron tidak menggunakan CPU apa pun saat sedang tidur. Itu juga tidak memiliki kesadaran akan waktu yang berlalu. Saat masuk ke mode tidur, ia menetapkan "batas waktu" berdasarkan berapa lama sebelum perintah berikutnya dari cronjob "terdaftar" harus dijalankan.

Di Solaris 10:

sol10-primary:/> # pflags  271  
271:    /usr/sbin/cron
        data model = _ILP32  flags = ORPHAN|MSACCT|MSFORK
 /1:    flags = ASLEEP  pollsys(0x8047c70,0x1,0x8047ce8,0x806ba00)

Saat menelusuri daemon cron, Anda akan melihatnya tertidur dengan batas waktu, seperti di bawah ini:

waitid(P_ALL, 0, 0x08047CD0, WEXITED|WTRAPPED|WNOHANG) Err#10 ECHILD
time()                                          = 1361952435
pollsys(0x08047C70, 1, 0x08047CE8, 0x0806BA00) (sleeping...)
        fd=3  ev=POLLRDNORM rev=0
        timeout: 105.000000000 sec
        sigmask = 0 0 0 0

Saat Anda memperbarui tugas cron, proses tidur juga dibangunkan tetapi untuk memperbarui konfigurasinya sendiri, setelah itu akan kembali tidur dengan nilai batas waktu yang baru.

Hal ini dimungkinkan untuk melihat batas waktu yang telah ditetapkan. Perhatikan bahwa cron memanggil syscall waktu sebelum tidur (yang mengembalikan detik sejak epoc), jadi jika Anda telah mengamati ini (yaitu melacak proses ketika memanggil time() syscall, Anda akan dapat mengurangi waktu itu dari saat ini dan bandingkan dengan batas waktu yang ditetapkan pada panggilan pollsys.

Jadi… seperti yang saya katakan, tidak mudah.


Linux
  1. Di mana log cron / crontab? / Bagaimana cara mengaktifkan Cron Log?

  2. Ke Mana File Pergi Saat Perintah Rm Dikeluarkan?

  3. Crontab Log:Cara Mencatat Keluaran Skrip Cron Saya

  1. Di mana fungsi itoa di Linux?

  2. Di mana letak sistem file Subsistem Linux di Windows 10?

  3. di mana database updatedb berada?

  1. Menjadwalkan tugas dengan perintah cron Linux

  2. Bagaimana Cara Kerja Bagian Dalam Cron Daemon?

  3. Di mana Deskripsi Isi Bagian Man?