Bir kullanıcının cronuna komut dosyası yoluyla satır eklemenin bir yolu var mı?
Genelde kullanarak yapıyorum crontab -e
, ancak bu görevi bir kabuk betiği ile otomatikleştirmek istiyorum.
Bir kullanıcının cronuna komut dosyası yoluyla satır eklemenin bir yolu var mı?
Genelde kullanarak yapıyorum crontab -e
, ancak bu görevi bir kabuk betiği ile otomatikleştirmek istiyorum.
Yanıtlar:
Satırı şu andaki kullanıcıların crontab'ının en altına şu şekilde ekleyebilirsin:
#!/bin/bash
line="* * * * * /path/to/command"
(crontab -u userhere -l; echo "$line" ) | crontab -u userhere -
cron
değiştirildiği bildirilmelidir .
crontab
kullanıcı için henüz mevcut değilse , bunun da yanlış olduğunu düşünüyorum (?)
Eğer crontab'ınızdaki bir değeri düzenlemek istiyorsanız, aşağıdaki satırlar boyunca bir şeyler yapabilirsiniz:
$ crontab -l | sed -e 's/foo/bar/' | crontab -
Açıkçası, yalnızca değiştirmek istediğiniz çizgiyle / çizgileriyle eşleştiğinden emin olmak için ikame işleminize dikkat etmeniz gerekir; Aksi takdirde hepsi (bu örnekte) foos
olarak değiştirildi bars
.
Bu yöntemin avantajı crontab'ın tamamını değiştirmemenizdir. (Bir balyoz yerine metaforik bir cımbız.)
Sed yerine herhangi bir düzenleme komutunu kullanabilirsiniz . Örneğin, eğer böyle görünen bir çizgiyi rötuşlamak için ed kullanmak istiyorsanız :
2 * * * * /sbin/flitch --days 3,4 > /var/log/flitch.out 2>&1
Diyelim ki bu satır birçok satır arasında veya farklı sistemlerde güncellemek için farklı crontab'larınız var ve yalnızca satırınızın içinde terim flitch
bulunan tek satır olacağını biliyorsunuz .
Şuna benzeyebilir:
$ 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
...
Şimdi zaman o neredeyse% 100'ünü itiraf etmeliyim sed yapacak ed yapacak, ancak İsviçre çakısı üzerinde ekstra bir araca sahip olmak her zaman iyidir. ^. ^