Bagaimana menjalankan pekerjaan cron hanya sekali?

14

Saya memiliki pekerjaan yang berjalan selamanya saat dimulai. Jadi saya ingin memulainya hanya sekali setelah memasukkannya ke file "crontab -e" dan menyimpannya (atau) setiap kali reboot terjadi.

Bagaimana cara mencapai ini?

Rama Vadakattu
sumber

Jawaban:

22

Jika Anda ingin perintah dijalankan sekali di kemudian hari, gunakan atperintah itu.

Jika Anda ingin perintah dijalankan sekali saat boot sistem, solusi yang tepat adalah dengan menggunakan:

  • skrip RC sistem (/etc/rc.local)
  • crontab dengan @rebootawalan khusus (lihat halaman manual)

Yang terakhir adalah satu-satunya pilihan untuk pengguna non-root.

MikeyB
sumber
2
+1 untuk menyebutkan @reboot.
Alex Holst
Saya selalu lebih suka menggunakan /etc/rc.local jika memungkinkan ... Saya menduga bahwa @reboot benar-benar menjalankan perintah pada startup crond, bukan boot sistem. Perbedaan yang halus tapi mungkin.
MikeyB
misalkan saya memasukkan @reboot "cmd ............." ke dalam file crontab dan menyimpannya. Akankah perintah ini dimulai sekarang? (atau) Apakah hanya dimulai setelah reboot?
Rama Vadakattu
Cobalah dan lihat :) Apa yang mungkin perlu Anda lakukan adalah memasukkannya ke crontab, lalu menjadwalkan eksekusi segera menggunakanat now
MikeyB
Jawaban yang bagus. Saya selalu lupa @reboot.
Bill Weiss
9

Anda bisa menggunakan di (1) untuk menjalankan pekerjaan di beberapa titik di masa depan. Namun, jika Anda ingin menjalankan sesuatu saat boot dan itu akan tetap berjalan dengan sendirinya, mungkin Anda ingin entri di /etc/init.d/ untuk itu? Itu akan membiarkan Anda memulainya saat boot.

Bill Weiss
sumber
1
Anda juga bisa menggunakan rc.local. Perintah-perintah di /etc/rc.local "akan dieksekusi setelah semua skrip init lainnya. Anda dapat memasukkan barang inisialisasi Anda sendiri di rc.local jika Anda tidak ingin melakukan hal-hal init gaya Sys V penuh."
Joe
Joe: panggilan bagus.
Bill Weiss
Bagaimana cara menghentikan proses yang dimulai dengan perintah? (saya tahu kill id proses setelah melihat daftar id proses dengan menggunakan "ps command" apakah ini bekerja untuk "at command" juga). Apakah membuat skrip khusus mudah?
Rama Vadakattu
Ya untuk keduanya. Semua proses dapat dihentikan menggunakan kill(dengan asumsi Anda punya izin untuk melakukannya, yang Anda lakukan untuk proses Anda sendiri). Membuat skrip init sangat mudah. Cari /etc/init.d/skrip yang tidak terlalu panjang dan contohkan skrip Anda setelah itu, atau google for making init scripts (your distribution).
Bill Weiss
1
Banyak distro menyertakan skeleton skrip ( /etc/init.d/skeletonpada openSuSE) yang dapat Anda sesuaikan untuk Anda gunakan.
MikeyB
3

Pekerjaan yang hanya berjalan sekali dan berjalan selamanya sampai Anda mengatakannya untuk mati disebut "daemon". Mereka biasanya dimulai melalui skrip init di /etc/init.d/.

Jika pekerjaan Anda berakhir pada titik tertentu dan dapat dianggap sebagai jenis pekerjaan sekali saja, maka Anda mungkin ingin melihat perintah at. Sebagai contoh jika saya ingin menjalankan perintah find di 10 malam ini dan hanya sekali ini yang akan saya lakukan:

$ at 10PM
at> find /root > /root/find_results.list
at> <EOT>
job 3 at 2010-02-10 22:00
CarpeNoctem
sumber
1

Lihatlah perintah at

Dominik
sumber
apa yang akan terjadi ketika sistem di-reboot? Apakah saya perlu memasukkan "at command" lagi?
Rama Vadakattu
Entri perintah at tidak akan hilang di reboot. ibm.com/developerworks/linux/library/l-job-scheduling.html adalah pengantar yang menarik untuk penjadwalan pekerjaan
Dominik
@Rama Vadakattu: "Entri perintah at tidak akan hilang pada saat reboot." ... itu belum dieksekusi. Lihat jawaban MikeyB .
Dijeda sampai pemberitahuan lebih lanjut.
ok saya akan melakukan penelitian lebih lanjut tentang ini.
Rama Vadakattu