Apa cara sederhana untuk menjalankan perintah, katakanlah, 8 jam dari sekarang? Saya bisa memikirkan cara ini:
nohup bash -c "sleep 28800 ; ./mycommand.sh" &
Apakah ada cara yang lebih "layak"?
Apa cara sederhana untuk menjalankan perintah, katakanlah, 8 jam dari sekarang? Saya bisa memikirkan cara ini:
nohup bash -c "sleep 28800 ; ./mycommand.sh" &
Apakah ada cara yang lebih "layak"?
Jawaban:
Anda bisa menggunakan at
perintah. The at
menjalankan perintah di lain waktu. The at
utilitas akan membaca perintah dari input standar dan kelompok mereka bersama-sama sebagai di-job, akan dieksekusi di lain waktu.
Biasanya, at
diinstal secara default di Ubuntu, tetapi jika rilis Anda tidak menyertakannya, instal melalui:
sudo apt-get install at
Untuk informasi lebih lanjut, opsi, contoh, dan lainnya lihat Ubuntu Manpage Repository
Contoh:
at now +8 hours -f ~/myscript.sh
Anda juga dapat menggunakan steno yang mudah digunakan, seperti tomorrow
atau noon
, seperti dalam
echo "tweet fore" | at teatime
Peringatan: Ini akan menjalankan perintah di sebelah kiri pipa segera tetapi hanya menyajikan hasilnya nanti. Contoh ini juga menunjukkan bagaimana Anda dapat menyalurkan aksiat
. at -c
adalah cara Anda dapat memeriksa tindakan yang dijadwalkan, yang dapat Anda daftarkan dengan mudah dengan jumlahnya, seperti:
at -c 3
at now +8 hours -f ~/myscript.sh
at 8:00
untuk menjalankan perintah pada waktu yang absolut, dan batch
untuk "ketika sepertinya komputer dalam keadaan diam"
teatime
jam 4 sore. Untuk beberapa alasan itu tidak disebutkan dalam manpages.ubuntu.com/manpages/raring/man1/at.1posix.html tetapi ada di man at
dan di sini manpages.ubuntu.com/manpages/raring/en/man1/at.1.html .
gpio write 8 1
tetapi dieksekusi segera.
Ya, Anda dapat mengatur pekerjaan cron.
Misalnya jika sekarang waktunya 14:39:00 dan hari ini adalah Jumat, 30 Agustus, Anda dapat menambahkan tugas cron berikut (akan dieksekusi setelah 8 jam) dalam file crontab Anda menggunakan crontab -e
perintah:
39 22 30 8 5 /path/to/mycommand.sh
Lebih tentang:
crontab
sampai Anda menghapusnya. Setahun kemudian, ketika Anda lupa siapa yang meletakkannya di sana dan mengapa, Anda akan dibiarkan menggaruk-garuk kepala bertanya-tanya apa yang harus dilakukan dengan perintah.
Gunakan GUI berbasis Gnome untuk cron
, at
, dan sejenisnya:
Pengenalan CronHowto menyarankan penggunaan gnome-schedule
gui, yang jauh lebih bagus daripada mengetik semua sampah ke terminal (khususnya untuk pengguna "rata-rata" Ubuntu yang bukan "kekuatan" * pengguna nix / bsd.)
Jalankan dengan menggunakan Unity Dash (atau menu aplikasi lain) untuk mencari Tugas Terjadwal atau menjalankan gnome-schedule
.
Pada sistem Ubuntu berbasis Gnome, Gnome Scheduled task tool (dari paket gnome-schedule) di Applications -> System Tools menyediakan antarmuka grafis dengan permintaan untuk menggunakan Cron. Situs web proyek ada di http://gnome-schedule.sourceforge.net/ ; perangkat lunak dapat diinstal dari Pusat Perangkat Lunak atau dengan mengetik
sudo apt-get install gnome-schedule
di terminal.
Menggunakan gnome-schedule
, untuk skrip di direktori home Anda, perintah "at" baru akan diatur menggunakan jenis jendela ini:
Saya menemukan cara cepat dan kotor untuk melakukan ini sebelum saya tahu at
ada sesuatu.
Katakan Anda ingin skrip Anda dijalankan pada siang hari:
until [[ "$(date)" =~ "12:00:" ]]; do
sleep 10
done
./mycommand.sh
Katakan Anda ingin menjalankannya besok siang (hari ini 24 November untuk saya):
until [[ "$(date)" =~ "25 12:00:" ]]; do
sleep 30
done
./mycommand.sh
Pembaruan : Metode yang sedikit lebih baik: hanya menguji angka yang Anda pedulikan, menggunakan date +FORMAT
:
until [[ $(date +%H:%M) == 21:06 ]]; do
...
at
, cron
, atau aplikasi scheduler nyata lainnya. Penjadwalan tugas itu sulit, dan bukan roda yang harus Anda temukan kembali.
at
.
at
adalah karena tugasnya akan selamat dari reboot.
nohup
+sleep
? Mengapa "tidak pantas"?