Как проверить, выполняется ли набор команд при запуске?

Как проверить, выполняется ли набор команд при запуске?

Я занимаюсь созданием графического интерфейса пользователя для 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 по этим двум ссылкам:

Руководство по Bash для начинающих - Machtelt Garrels - 2008
Расширенное руководство по написанию сценариев Bash - Mendel Cooper - 2014

Связанный контент