crontab 작업이 작동하지 않습니다.

crontab 작업이 작동하지 않습니다.

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

관련 정보