Tambahkan baris ke cron dari skrip


Jawaban:


49

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 -

+1 cuz Anda mengalahkan saya untuk itu (saya punya kesalahan skrip saat menguji: D). 1 hal yang perlu Anda tambahkan saya pikir: sistem perlu diinformasikan yang crondiubah.
Rinzwind

Saya tahu ini akan menjadi perlombaan untuk dijawab! Anda benar bahwa cron perlu diberitahukan. Inilah sebabnya mengapa Anda tidak bisa hanya mengulang perintah ke akhir crontab. Saya telah menguji bahwa skrip di atas berfungsi dan cron mulai menjalankan perintah.
Richard Holloway

13
Oh dan saya pikir ini juga kesalahan jika crontabpengguna itu belum ada (?)
Rinzwind

7
Ini memperingatkan Anda bahwa pengguna crontab tidak ada, jika itu masalahnya, tetapi kemudian akan membuatnya. Saya memvotasikan komentar Anda sebagai wawasan.
Richard Holloway

3

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 foosdiubah 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 flitchdi 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. ^. ^

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.