crontabのコマンドは機能しませんが、端末で同じコマンドを実行すると機能します。
[root@ds backup]# crontab -l
* * * * * find /opt/backup -type f -regextype posix-extended -not -regex '.*('$(sed 's/ /|/g' <<<$(echo {6..0} | xargs -I{} -d ' ' date --date={}' days ago' +"%Y%m%d" | xargs echo))').*' &> /home/ocdn_adm/f.txt
#
#
2分後に次のコマンドを実行します。
[root@ds backup]# cat /home/ocdn_adm/f.txt
cat: /home/ocdn_adm/f.txt: No such file or directory
cronコマンドを実行できないようです。
しかし、端末で同じコマンドを実行すると、
[root@ds backup]# find /opt/backup -type f -regextype posix-extended -not -regex '.*('$(sed 's/ /|/g' <<<$(echo {6..0} | xargs -I{} -d ' ' date --date={}' days ago' +"%Y%m%d" | xargs echo))').*' &> /home/ocdn_adm/f.txt
[root@ds backup]# cat /home/ocdn_adm/f.txt
/opt/backup/conf-backup-20180407.tar.gz
奇妙なことに動作します。 crontabでコマンドを実行できますか?
答え1
これはデフォルトではcron
使用されませんbash
。使用するシェルも指定する必要がありますPATH
。たとえば、次のようになります。
SHELL=/bin/bash
PATH=~/bin:~/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/bin
* * * * * find /opt/backup -type f -regextype posix-extended -not -regex '.*('$(sed 's/ /|/g' <<<$(echo {6..0} | xargs -I{} -d ' ' date --date={}' days ago' +"\%Y\%m\%d" | xargs echo))').*' &> /home/ocdn_adm/f.txt
その間、Xに依存するコマンドが正しく機能するように、ディスプレイに関する情報も追加したいと思います。
DISPLAY=:0
cron コマンドをデバッグするには、syslog、実行情報、考えられるエラーを表示できます。
tail -f /var/log/syslog
正しいコマンドの出力例xset m 1 1
:
May 11 14:29:01 cage CRON[25152]: (Ctrl-C) CMD (xset m 1 1)