Apakah ada cara untuk menambahkan baris ke cron pengguna melalui skrip?
Saya biasanya melakukannya dengan menggunakan crontab -e
, tetapi saya ingin mengotomatiskan tugas ini dengan skrip shell.
Apakah ada cara untuk menambahkan baris ke cron pengguna melalui skrip?
Saya biasanya melakukannya dengan menggunakan crontab -e
, tetapi saya ingin mengotomatiskan tugas ini dengan skrip shell.
Jawaban:
Anda dapat menggemakan baris ke bagian bawah crontab pengguna saat ini seperti ini:
#!/bin/bash
line="* * * * * /path/to/command"
(crontab -u userhere -l; echo "$line" ) | crontab -u userhere -
cron
diubah.
crontab
pengguna itu belum ada (?)
Jika Anda ingin mengedit nilai di crontab Anda, Anda dapat melakukan sesuatu di sepanjang baris:
$ crontab -l | sed -e 's/foo/bar/' | crontab -
Jelas Anda harus berhati-hati dengan subtitusi Anda untuk memastikan itu hanya cocok dengan baris yang ingin Anda ubah; jika tidak semua foos
diubah menjadi bars
(dalam contoh ini).
Keuntungan dari metode ini adalah Anda tidak mengganti seluruh crontab. (Penjepit metaforis daripada palu godam.)
Anda dapat menggunakan perintah pengeditan apa pun alih-alih sed . Misalnya, jika Anda ingin menggunakan ed untuk menyentuh garis yang mulai tampak seperti ini:
2 * * * * /sbin/flitch --days 3,4 > /var/log/flitch.out 2>&1
Katakanlah baris ini ada di antara banyak baris atau Anda memiliki banyak crontab yang berbeda untuk diperbarui pada sistem yang berbeda dan Anda hanya tahu baris Anda akan menjadi satu-satunya baris dengan istilah flitch
di dalamnya.
Itu mungkin terlihat seperti:
$ cat /tmp/edscript
/flitch
s/3/9/
w
q
$ crontab -l > /tmp/out && ed /tmp/out < /tmp/edscript && crontab - < /tmp/out
$ crontab -l
...
2 * * 1 * /sbin/flitch --days 9,4 > /var/log/flitch.out 2>&1
...
Sekarang saya harus mengakui bahwa hampir 100% dari waktu sed akan melakukan apa ed akan melakukannya, tapi selalu baik untuk memiliki alat tambahan pada pisau tentara Swiss. ^. ^