sh-4.4$ 기본 쉘 터미널에 어떻게 다시 로그인합니까?

sh-4.4$ 기본 쉘 터미널에 어떻게 다시 로그인합니까?

이를 열면 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-terminalcronjob으로 시작한다고 가정합니다.

내부에서 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/shbashsh bash시스템에 있지만 ) 로 호출되면 POSIX 호환 모드에서 실행됩니다 sh.

그래픽 데스크탑 환경에 로그인한 경우 gnome-terminal평소대로 열면 기본 쉘이 제공됩니다. 그렇지 않다면 gnome-terminal-servercron 작업에 의해 시작된 프로세스가 실행 중이기 때문입니다 . 를 다시 시작하거나 사용하여 이 프로세스를 종료하십시오 pkill -f gnome-terminal-server.

당신은 또한 볼 수 있습니다다음은 JdeBP가 게시한 댓글입니다..

관련 정보