У меня есть два простых скрипта:
/opt/script/loloswitcher.sh
#!/bin/bash
echo "/opt/script/loloswitcherPostRun.sh" | at now
/opt/script/loloswitcherPostRun.sh
#!/bin/bash
logFile="/tmp/loloswitcherLog.txt"
/bin/date > $logFile
/bin/echo "Label 1" >> $logFile
/bin/sleep 3
/bin/date >> $logFile
/bin/echo "Label 2" >> $logFile
Права на эти скрипты следующие:
$ ls -la | grep lolo
-rwxrwxrwx 1 root root 391 мар 2 10:47 loloswitcherPostRun.sh
-rwxrwxrwx 1 root root 204 мар 2 10:24 loloswitcher.sh
Проблема в том, что если запустить loloswitcher.sh от root, то произойдет запуск loloswitcherPostRun.sh, будет создан файл /tmp/loloswitcherLog.txt, в него будут записаны обе метки Label 1 и Label 2.
Но если удалить /tmp/loloswitcherLog.txt и запустить loloswitcher.sh от обычного пользователя, то скрипт loloswitcherPostRun.sh не будет выполнен, и файл /tmp/loloswitcherLog.txt вообще не будет создан. В системных логах полное молчание, никаких ошибок или предупреждений.
Почему-то команда at способна выполнять скрипты только при запуске от рута. Что где еще нужно докрутить, чтобы можно было запускать команды через at от обычного пользователя?