Bagaimana cara menjalankan perintah setiap 10 detik (tanpa cron)?

36

Ketika saya mengeksekusi cronsaya mendapatkan kesalahan ini

cron: tidak bisa membuka atau membuat /var/run/crond.pid: Izin ditolak

Jadi, bagaimana cara melakukannya tanpa cron?

PS Saya ingin memeriksa apakah file di svn telah berubah dan saya memiliki skrip khusus untuk itu.

UAdapter
sumber
Jika Anda tidak memiliki izin, maka coba jalankan cron with sudo.
Anonim
4
Ingatlah bahwa cron tidak akan melakukan sesuatu setiap 10 detik, yang paling sederhana yang didapat adalah satu menit sekali.
Cesium
Jika Anda ingin membuat cronjobs, Anda harus menjalankan crontab -euntuk memulai editor. Untuk daftar crons saat ini, jalankancrontab -l
Lekensteyn
@ Anonim saya tidak tahu kata sandi root, jadi sudo tidak akan membantu saya.
UAdapter
unix.stackexchange.com/questions/10646/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

59

Untuk mengakses cronkonfigurasi pribadi Anda, Anda harus menggunakan perintah crontab -e(untuk mengedit tabel cron Anda).

Alternatif adalah watchperintah:

watch -n10 command args

Akhirnya, untuk memantau kejadian sistem file secara lebih efektif, Anda dapat menggunakan inotifywait, dari inotify-toolspaket.

enzotib
sumber
1
Perlu dicatat, mungkin, Anda sebaiknya membungkus perintah Anda dengan tanda kutip ganda atau Anda mungkin berakhir dengan hasil yang tidak terduga. watch -n<timeout> "command(s) arg(s)"sepertiwatch -n2 "ps ux | grep ss5"
Achilles
Saya merasa sulit untuk watchmenerima perintah yang panjang dan rumit menggunakan pipa dan kutipan. Loop sementara di bawah ini berfungsi, tetapi tentu saja orang harus selalu tidur terlebih dahulu untuk menghindari pil pelarian.
rjurney
@rjurney: itu harus cukup untuk membungkus seluruh perintah dengan tanda kutip, tunggal atau lebih baik ganda:watch -n10 "ls -l | grep $foo"
enzotib
@enzotib Masalahnya muncul ketika ada tanda kutip di perintah, karena tanda kutip di dalam tanda kutip (tuhan tolong aku) tanda kutip mendekati mustahil di bash. Secara teori itu seharusnya mungkin tetapi saya jarang mencapai kutipan bersarang di bash tanpa menyerah dan menempuh rute yang berbeda.
rjurney
32

Anda bisa menulis skrip shell yang ada sleepdi loop sementara.

#!/bin/sh
while [ true ]
do
    sh special_svn_script.sh
    sleep 10
done
Anonim
sumber
5
while truetidak memerlukan tanda kurung siku, jika "benar" diartikan sebagai string, dan setiap string sama baiknya dengan "benar".
enzotib
1
@enzotib jadi sebaiknya Anda menulis sambil berkeliling
Eduard Florinescu
Meskipun ini berhasil, Anda harus selalu tidur lebih dulu karena sesuatu dapat terjadi yang menyebabkan langkah tidur tidak tercapai, dalam hal ini Anda mendapatkan pid yang melarikan diri membanjiri sesuatu.
rjurney
4

gnome-schedule (klik tombol untukInstall now!menggunakan Pusat Perangkat Lunak Anda)
adalah antarmuka pengguna grafis yang memanfaatkan kekuatan vixie-cron, dcron dan at untuk mengelola file crontab Anda dan menyediakan cara mudah untuk menjadwalkan tugas di komputer Anda. Ini mendukung tugas-tugas berulang (berkala) dan tugas-tugas yang terjadi hanya sekali di masa depan. Itu ditulis dalam Python menggunakan pygtk.

Fitur luar biasa

  • Mendukung judul dan ikon khusus untuk tugas Anda sehingga lebih mudah untuk dilacak
  • Template mendukung sehingga Anda tidak perlu lagi membuat tugas yang sama; ini disimpan dalam gconf dan dapat dengan mudah mengirimkannya dengan, katakanlah, distribusi Linux
  • Jika dijalankan sebagai root, Anda dapat mengedit tugas crontab dan "at" pengguna mana saja.
  • String yang dapat dibaca manusia seperti "Setiap jam" dan bukan "0 * * * *"
  • Mode lanjutan untuk para pakar crontab
  • Menyediakan "applet panel" tempat Anda dapat mengelola tugas dari menu tarik turun
  • Ekspresi umum yang telah ditentukan sebelumnya seperti: setiap menit, setiap minggu, besok, minggu depan Kalender memungkinkan Anda memilih hari di mana Anda ingin tugas dieksekusi
hhlp
sumber