Pekerjaan crontab mulai +1 menit setelah @reboot


44

Perlu skrip dieksekusi pada setiap reboot dalam +1 menit. Saya menempatkan catatan @reboottetapi terlalu dini untuk skrip saya. Bagaimana cara menjalankannya beberapa saat setelah reboot?


3
Kenapa terlalu dini ? Mungkin skrip init akan lebih cocok (dengan memperhatikan dependensi, mis. Skrip ini membutuhkan jaringan untuk diatur terlebih dahulu )?
sr_

naskah saya perlu dieksekusi setelah semua yang lain, yang terakhir dengan kata
Yurij73

karena pekerjaan Anda perlu dieksekusi setelah semuanya dan karena konsep semuanya cukup variabel (penambahan aplikasi autostart @ reboot baru tidak begitu umum), saya pikir itu terserah Anda untuk menempatkan pekerjaan Anda ke dalam skrip rc di sebuah cara server tujuan Anda. Menempatkan tugas Anda di bagian bawah tugas yang ditentukan dalam /etc/rc.local biasanya adalah yang Anda inginkan, tetapi tergantung pada konfigurasi startup sistem Anda, ini mungkin tidak berlaku terus-menerus. Jadi, ujilah dan lihat apakah itu cocok untuk Anda.
MelBurslan

Kedengarannya seperti kasing untuk pemula?
nafg

Jawaban:


68

Apakah skrip hanya dimaksudkan untuk berjalan satu menit setelah boot, atau dapatkah itu digunakan di lain waktu juga? Dalam kasus sebelumnya, Anda dapat menambahkan sleep 60ke awal skrip Anda, atau dalam kasus terakhir, menambahkannya ke file crontab:

@reboot sleep 60 && my_script.sh

Seperti yang telah ditunjukkan oleh sr_, mungkin, Anda menangani ini dengan cara yang salah, dan skrip init.d atau rc.d yang tepat akan menjadi solusi yang lebih kuat.


1
Atau gunakan opsi baris perintah untuk mengubah penundaan (mis. script -s XYang akan diterjemahkan ke sleep Xdalam skrip).
peterph

Bisakah saya menerapkan ini pada file taskrunner di /etc/init.d/?
Andres Angel

@AndresAngel - Maaf, saya tidak tahu. Saya menggunakan FreeBSD yang tidak memiliki taskrunner, atau, dalam hal ini,/etc/init.d
D_Bye

pada r7 saya tidur tidak berfungsi sama sekali, tidur selamanya & tidak pernah kembali.
Inder R Singh

15

Jika Anda perlu menjalankan sesuatu setelah reboot ketika jaringan akan tersedia, misalnya, Anda dapat menulis unit systemd yang akan dieksekusi pada waktu yang diperlukan (tentu saja ini hanya akan bekerja pada sistem dengan systemd).

Untuk melakukannya, buat file /etc/systemd/system/my_script.servicedengan konten berikut:

[Unit]
Description=My script that requires network
After=network.target

[Service]
Type=oneshot
ExecStart=/full/path/to/my_script.sh

[Install]
WantedBy=multi-user.target

Kemudian jalankan:

sudo systemctl daemon-reload
sudo systemctl enable my_script

Kamu sudah selesai!


11

Saya akan menggunakan at. Seperti dalam:

@reboot echo /root/bin/do_the_stuff | at now + 2 minutes
# at assigns it an execution time truncated to whole minutes,
# so this means it will execute in 1--2 minutes.

... dengan peringatan yang disebutkan sebelumnya bahwa jika apa yang Anda inginkan adalah menjalankannya setelah semua hal lain, Anda harus memeriksa bagaimana melakukannya di init yang digunakan oleh OS Anda.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.