Установил cygwin, написал мой скрипт, успешно протестировал. Однако, когда я запускаю его как запланированную задачу Windows, она терпит неудачу. Дальнейшее копание показывает, что не все программы доступны при запуске сценария таким способом. Например, запустив Mintty и введя ls, вы увидите содержимое моего каталога. Запуск bash.exe из командной строки Windows приведет к появлению приглашения "BASH", но команда ls не распознана.
Я попробовал стандарт
c:\cygwin\bin\bash.exe -l -c "/home/user/logoff.sh"
так же хорошо как
c:\cygwin\bin\mintty.exe /bin/bash -l -c "/home/user/logoff.sh"
Я добавил команду echo, которая выводит текстовый файл, и это работает, поэтому я знаю, что скрипт вызывается. Похоже, что проблема в том, что различные программы недоступны, или мне не нравится, как я работаю.
Это сценарий, который я пытаюсь запустить.
for user in user1 user2 user3 ;
do
id=$(query user $user 2>> /dev/null | awk '{ print $3 }' | sed -e '/ID/ d')
if [[ "$id" =~ ^[1-9][0-9]?$ ]]; then
logoff $id
echo "$user was logged off" >> logg_off.log
fi
done
Есть идеи?
РЕДАКТИРОВАТЬ
- Я перебрал имя файла в запланированном задании, поэтому оно не удалось запустить.
- Все еще не уверен, почему сценарий не сможет завершиться. Я удалил всех, кроме одного пользователя из списка, и все работает, как ожидалось. Придется подождать до вечера, чтобы проверить, смогу ли я выйти из системы других пользователей за один проход.