이를 열면 gnome-terminal
기본 Bash 셸이 표시되는 대신 다음이 표시됩니다.
sh-4.4$
DISPLAY=:0
이 내용을 내 파일에 추가한 이후부터 crontab -e
이런 일이 발생하기 시작했습니다 . 이제 다음과 같습니다.
DISPLAY=:0
0 0,6,12,18 * * * /usr/bin/gnome-terminal -e /home/orschiro/bin/updates.sh
0 0,6,12,18 * * * /usr/bin/gnome-terminal -e /home/orschiro/bin/rclone.sh
또한 흥미로운 점은 다음과 같습니다.
sh-4.4$ ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 18. Jun 10:30 /bin/sh -> bash
답변1
나는 이것이 gnome-terminal
cronjob으로 시작한다고 가정합니다.
내부에서 cronjob 스크립트를 실행할 필요가 전혀 없습니다 gnome-terminal
. 이렇게 하면 gnome-terminal
작업을 열 수 없으면 작업이 실패하게 됩니다(당시 데스크톱을 사용하지 않는 경우 발생할 수 있음).
그냥 사용
0 0,6,12,18 * * * "$HOME"/bin/updates.sh
0 0,6,12,18 * * * "$HOME"/bin/rclone.sh
로컬 이메일 전달이 활성화되어 있다고 가정하면 스크립트의 모든 출력이 이메일로 전송됩니다. 출력을 로그 파일에 저장하려면 리디렉션을 사용하십시오.
0 0,6,12,18 * * * "$HOME"/bin/updates.sh >>"$HOME"/updates.log"
0 0,6,12,18 * * * "$HOME"/bin/rclone.sh >>"$HOME"/rclone.log"
cronjob은 일반적으로 그래픽 데스크탑 환경을 통해 로그인할 때와 다른 환경에서 실행됩니다. 우선, 기본 셸이 SHELL
환경 변수에 설정되지 않을 수 있습니다. 이것이 바로 ( 대신 gnome-terminal
실행되는 이유입니다./bin/sh
bash
sh
예 bash
시스템에 있지만 ) 로 호출되면 POSIX 호환 모드에서 실행됩니다 sh
.
그래픽 데스크탑 환경에 로그인한 경우 gnome-terminal
평소대로 열면 기본 쉘이 제공됩니다. 그렇지 않다면 gnome-terminal-server
cron 작업에 의해 시작된 프로세스가 실행 중이기 때문입니다 . 를 다시 시작하거나 사용하여 이 프로세스를 종료하십시오 pkill -f gnome-terminal-server
.
당신은 또한 볼 수 있습니다다음은 JdeBP가 게시한 댓글입니다..