간단한 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\""