私はLinuxを学んでいるので、ここで明白な何かを見落としているかもしれないので、私にご負担ください。私は現在、カスタムシェルスクリプトを実行するためにcronジョブをセットアップしようとしています。このスクリプトは、ターミナルからうまく動作していますが、cronではなく動作しています。以下はその詳細です。私は経験豊富なユーザーからの洞察を感謝します。Linuxのミントでcrontabでシェルスクリプトが実行されていない
システム情報
RELEASE=17.3
CODENAME=rosa
EDITION="Cinnamon 64-bit"
DESCRIPTION="Linux Mint 17.3 Rosa"
DESKTOP=Gnome
TOOLKIT=GTK
NEW_FEATURES_URL=http://www.linuxmint.com/rel_rosa_cinnamon_whatsnew.php
RELEASE_NOTES_URL=http://www.linuxmint.com/rel_rosa_cinnamon.php
USER_GUIDE_URL=help:linuxmint
GRUB_TITLE=Linux Mint 17.3 Cinnamon 64-bit
カスタムシェルスクリプト
場所:/usr/local/bin/make_ls_files.sh
内容:
#!/bin/bash
# test script to echo ls stout to files
# (learning cron jobs)
# tilde path not working in cron, trying full path
# ls > ~/ls_file_$(date +%F_%H-%M-%S).log
ls > /home/zion/ls_file_$(date +%F_%H-%M-%S).log
スクリップtは端末から正しく実行され(cwd
から)、ls
という出力を持つファイル/home/zion/ls_file_2016-11-17_17-38-37.log
を出力します。
は今、私はセットアップcrontab -e
経由cronジョブがあります。私はそれが実際に動作しているsyslogに見
# create text files every minute:
PATH=/usr:/usr/bin:/usr/local/bin
* * * * * make_ls_files.sh >> /usr/local/bin/make_ls_files_log.log 2>&1
が、何も出力やログエントリが作成されません。それが働いて、どのようにデバッグするためにされていない理由として
...
Nov 17 17:42:01 zion-VirtualBox CRON[4845]: (zion) CMD (make_ls_files.sh >> /usr/local/bin/make_ls_files_log.log 2>&1)
Nov 17 17:42:01 zion-VirtualBox CRON[4844]: (CRON) info (No MTA installed, discarding output)
Nov 17 17:43:02 zion-VirtualBox CRON[4850]: (zion) CMD (make_ls_files.sh >> /usr/local/bin/make_ls_files_log.log 2>&1)
Nov 17 17:43:02 zion-VirtualBox CRON[4849]: (CRON) info (No MTA installed, discarding output)
任意のアイデア: のsyslogはこれを示して?
EDIT 01:
私はcronジョブを変更:
/usr/local/bin/make_ls_files.sh: line 6: date: command not found
/usr/local/bin/make_ls_files.sh: line 6: ls: command not found
なぜls
を:今、私はどこか、ログファイルが含む、/home/zion/crontab.log
で作成されて取得しています
* * * * * make_ls_files.sh 2>>$HOME/crontab.log
date
は認識されませんか?すべての
EDIT 02
おかげで、私はここにいくつかのことを学びました。ルスランが出pointendとして、私は2つの問題だった:
# create text files every minute:
PATH=/bin:/usr:/usr/bin:/usr/local/bin
# * * * * * make_ls_files.sh >> /usr/local/bin/make_ls_files_log.log 2>&1
* * * * * make_ls_files.sh 2 >> $HOME/crontab.log
crontabで 'make_ls_files.sh'へのフルパスを使うべきです* * * * * /usr/local/bin/make_ls_files.sh >> /usr/local/bin/make_ls_files_log.log 2>&1' – bansi
@ '/ usr/local/bin /'が '$ PATH'にある場合は必要ありません。 –
@RuslanOsmanov、Cronのデフォルトパスは実装依存であり、ディストリビューション間で信頼できるものではありません。常により安全な側にいる方が良いです。 – bansi