시작 시 일련의 명령이 실행되는지 어떻게 확인합니까?

시작 시 일련의 명령이 실행되는지 어떻게 확인합니까?

에 대한 GUI 프런트엔드를 생성하는 중이며 xrandr시작 시 실행할 몇 가지 명령이 필요합니다.

.desktop에 있는 파일을 사용하고 있습니다 ~/.config/autostart.

내 설정에서는 작동하지 않기 때문에 이것이 작동할지 알 수 없습니다. xrandr모든 것이 의도한 대로 작동하고 있다는 것을 알고 있습니다. 단지 내 시스템이 이를 지원하지 않기 때문일 뿐입니다. xrandr 오류가 많이 발생할 뿐입니다. 이는 또한 시작 시 오류가 발생하고 눈에 띄는 변화가 없음을 의미합니다.

명령이 실행되었는지 확인할 수 있는 방법이 있습니까?

답변1

자동 시작된 .desktop파일이 스크립트인 경우 다음 예와 같이 스크립트에 제어 에코를 넣을 수 있습니다.

# if yyou want only data saved for one run

echo "Script has run on $(date)" > ~/script.log

# if you want a continous log output append

if [ -e ~/script-log ]
    then
        echo "Script has run on $(date)" >> ~/script.log
else
        touch ~/script.log
        echo "Script has run on $(date)" >> ~/script.log
fi

이렇게 하면 이러한 방식으로 제어하기 위해 원하는 일부 가변 데이터를 출력할 수도 있습니다. 스크립트의 모든 명령 다음에 최종 결과가 인쇄되어 스크립트가 실행되었는지 확인하세요.

스크립트의 명령이 실패했는지 정확히 알고 싶다면 다음을 수행할 수 있습니다.

# do this at start of your script

if [ -e ~/script-error.log ]
    then
        # we do nothing
else
        touch ~/script-error.log
fi

# then within your script (I use as example here cd /root just to demonstrate)
# you can do this with nearly all commands

cd /root 2>> ~/script-error.log

명령 중 하나가 오류를 발생시키는 경우에만 가져옵니다. 물론 모든 곳에 적용할 수는 없지만 출력이 전혀 없는 것이 더 좋습니다.

배관 설명:

# single piping symbol (overwrite the existing file and creates one if not existant)
>               # pipes all output 
1>              # pipes only success messages
2>              # pipes only error messages

# double piping symbol (append to an existing file and fail if file does not exist)
>>              # pipes all output
1>>             # pipes only success messages
2>>             # pipes only error messages

bash 스크립팅에 대해 자세히 알고 싶으면 다음 두 링크를 참조하세요.

초보자를 위한 배쉬 가이드 - Machtelt Garrels - 2008
고급 Bash 스크립팅 가이드 - Mendel Cooper - 2014

관련 정보