簡単なcrontabタスクを作成しました。
しばらく休憩する必要があることを思い出させるために、15分ごとに実行する必要があります。しかし、動作しません。理由はわかりません。
crontabの経験があれば助けてください。 crontab -eコマンドを使用してこのファイルを作成して保存します。
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
*/15 * * * * /home/galaxy/Documents/projects/Bash/cron_job.sh
このファイルは15分ごとにcron_job.shスクリプトを実行する必要があります。
これはchmod値が500のBashシェルスクリプトです。これには、新しい gnome 端末を作成し、その新しい端末内でコマンドを即時に実行して take_a_break ファイルをキャプチャするコマンドが含まれます。これは私に休憩を求める簡単なメッセージを含むテキストファイルです。
ターミナルから直接シェルスクリプトを実行したり、その中に含まれているコマンドを実行したりすると、うまく機能しますが、crontabジョブはまったく機能しません。私の形式が間違っている可能性があります。
cron_job.sh ファイルの内容は次のとおりです。
#!/bin/bash
gnome-terminal -e "bash -c \"cat /home/galaxy/Documents/ascii/take_a_break; exec bash\""
シェルスクリプトにコマンドを入れた理由は、cronが以前にコマンドを実行していなかったが、cronもシェルスクリプトを実行しなかったためです。
確認してみると、私の構文が正しいようです。
また、関連する場合、crond
コマンドを実行しようとするとエラーが発生します。
$ crond
No command 'crond' found, did you mean:
Command 'cron' from package 'cron' (main)
crond: command not found
ベストアンサー1
だから私の問題に対する解決策を見つけました。
gnome-terminalのフルパスを使用し、その行をexport DISPLAY=:0.0
シェルスクリプトに追加しました。
今私のcronタスクは期待どおりに動作します。
#!/bin/bash
export DISPLAY=:0.0
/usr/bin/gnome-terminal -e "bash -c \"cat /home/galaxy/Documents/ascii/take_a_break; exec bash\""