Bazı komutlarım var, bash altında çalışıyorlar, ancak cronjob olarak değil. Sorunun nedenini görmek için, çıktıyı bir dosyaya kaydediyorum, işte örneğim:
51 * * * * source ~ / .rvm / scripts / rvm >> stack.log 2>&1
Günlük dosyasının içeriği:
/ bin / sh: 1: kaynak: bulunamadı
Bu, cron'un bash
içinde sh
kullandığı anlamına gelir. Bunu /etc/crontab
:
SHELL=/bin/bash
'de değiştirmeyi denedim Ama bu çalışmıyor. / etc / passwd
'ye baktım ve burada daemon'un varsayılan kabuk olarak sh
kullandığını görüyorum. Hem root
hem de pi
, varsayılan kabuk olarak bash
'a sahiptir.
root: x: 0: 0: root : / root: / bin / bashdaemon: x: 1: 1: daemon: / usr / sbin: / bin / shpi: x: 1000: 1000: ,,,: / home / pi: / bin / bash
cron için varsayılan kabuğunu değiştirmek için ne yapmalıyım? / etc / passwd
içinde daemon kullanıcısı için / bin / bash
ayarlamazdım ... imho bu iyi bir fikir değil.
düzenle:
ls -l / bin / shlrwxrwxrwx 1 root root 4 Mar 30 2012 / bin / sh -> dash
burada /etc/crontab
:
# / etc / crontab: system-wide crontab: # Diğer crontab'lerin aksine çalıştırmanız gerekmeyen Bu dosyayı # ve /etc/cron.d'deki dosyaları düzenlediğinizde yeni sürümü yüklemek için `crontab '# komutu. Bu dosyalarda ayrıca kullanıcı adı alanları da vardır, # diğer crontab'lerin sahip olmadığı # SHELL = / bin / bashPATH = / usr / local / sbin: / usr / local / bin: / sbin: / bin: / usr / sbin: / usr / bin # mh dom mon dow user command17 * * * * root cd / && run-parts --report /etc/cron.hourly25 6 * * * root testi -x / usr / sbin / anacron || (cd / && run-parts --report /etc/cron.daily)
47 6 * * 7 kök testi -x / usr / sbin / anacron || (cd / && run-parts --report /etc/cron.weekly) 52 6 1 * * kök testi -x / usr / sbin / anacron || (cd / && run-parts --report /etc/cron.monthly) #