Мы ищем решение, что каждый день недели, ПК делает завершение работы в 20:00.
ПК имеет многопользовательские учетные записи, но всегда только один человек будет использовать его. Будет несколько учетных записей из-за различных заданий в компании.
Напр. Человек 1 Учетная запись A использования, но Человек 2, у кого есть ее собственный ПК, но с тем же изображением, входит в систему другой учетной записи, потому что у нее есть другая функция. Человек 1 только nows вход в систему его учетной записи и человека 2 также только для ее учетной записи. Так 1 пк, несколько учетных записей, но тем не менее один пользователь за один раз.
Используя Crontab (в администраторской учетной записи) был лучший способ позволить этой работе для всех пользователей.
Теперь мы также хотим это в 19:50 сообщение (как предупреждение, или уведомьте, отправляют, или zenity), кажется, предупреждает пользователя завершения работы. (КТО НЕ СМОЖЕТ ПРЕДОТВРАТИТЬ ЕГО).
Я знаю, что не возможно попросить у Crontab * * * * * /path/to/notify-send "Pc will shut down".
Мы попробовали a .sh
со следующим кодом:
#!/bin/sh
DISPLAY=:0.0
/usr/bin/notify-send 'shutdown warning'
(Завершение работы, предупреждающее, не то, что мы хотим, но только для теста'.
Мы протестировали этот .sh в терминале и без ошибок. Работы отлично. Когда мы добавляем его к Crontab, как это:
sudo contrab -e
* * * * * /home/administrator/sluiten.sh
(и да это на 100 процентов уверено корректный каталог), он не работает.
Так может кто-то говорить мне что мой .sh
файл должен быть похожим и как добавить его к crontab, таким образом, это работает?
Сценарий в качестве примера для получения всех пользователей вошел в систему, и отправьте предупреждение им. После в первый раз, когда скрипт запущен, журнал должен быть проверен, чтобы видеть, нужна ли полю сокращения корректировка, из-за разностей потенциалов в who
вывод. На последующем использовании могут быть прокомментированы регистрирующиеся строки эха. Цикл с условием продолжения является излишеством для системы отдельного пользователя, но может оказаться полезным.
#!/bin/bash
###
USERLIST=($(who | sed -e 's/[)(]//g' -e 's/ */ /g' | cut -d ' ' -f1,5 | sort -u | tr -d '\n'))
LOG=/tmp/"$(basename [110])".log
###
echo "$(who | sed -e 's/[)(]//g' -e 's/ */ /g')" >> $LOG
echo "${USERLIST[@]}" >> $LOG
C=0
while [ $C -lt ${#USERLIST[@]} ]
do
D=$((C + 1))
export DISPLAY="${USERLIST[$D]}"
export XAUTHORITY="/home/${USERLIST[$C]}/.Xauthority"
export XDG_RUNTIME_DIR=/run/user/$(id -u ${USERLIST[$C]})
/usr/bin/notify-send 'shutdown warning'
C=$((C + 2))
done
Во-первых, root
crontabs не похожи на пользователя crontabs и НЕ редактируются с sudo crontab -e
. Прочитайте оригинал /etc/crontab
файл. root
cronjobs хранятся в /etc/cron.d
, /etc/cron.daily
, /etc/cron.hourly
/etc/cron.monthly
, и /etc/cron.weekly
. Ими управляют с по-другому отформатированный /etc/crontab
(это имеет a userid
поле), не /var/spool/cron/crontabs/root
файл, созданный sudo crontab -e
.
Для ответа на вопрос посмотрите man shutdown
:
xenial (8) shutdown.8.gz
Provided by: upstart-sysv_1.13.2-0ubuntu21_i386
NAME
shutdown - bring the system down
SYNOPSIS
shutdown [OPTION]... TIME [MESSAGE]
DESCRIPTION
shutdown arranges for the system to be brought down in a safe way. All
logged-in users are notified that the system is going down and, within
the last five minutes of TIME, new logins are prevented.