В первый раз, когда я управлял занятым сервером, мне пришлось ждать подходящего времени, чтобы перезагрузить его, когда люди его не использовали.
Я заметил, что это произошло около 3 утра.
Затем я подумал про себя: «Ну, это неудобно, я должен проснуться в разумный час, чтобы просто перезагрузить свой сервер».
Через пять секунд я понял, что это глупая мысль. «Это Linux, я уверен, что легко автоматизировать простую задачу». Так собственно, команда at была обнаружена.
Утилита очень проста в использовании.
Вы просто передаете время и дату в качестве параметра командной строки, а затем вводите одну или несколько команд.
На сервере полезно иметь эту программу, потому что вы часто хотите действовать без присмотра.
Но даже на десктопе она может оказаться очень удобным инструментом.
Например, вы загружаете очень большой файл.
Вы можете запланировать выключение компьютера на ночь.
Таким образом, вы можете рассказать системе о том, что вам нужно сделать.
Практически любое действие, которое вы можете придумать, используя правильные инструменты и параметры командной строки.
Как установить “at” на различных дистрибутивах Linux
В Debian или дистрибутиве, основанном на Debian, запустите:
sudo apt install at
на Fedora, run:
sudo dnf install at
На Arch Linux:
sudo pacman -S at
и конечно , на openSUSE:
sudo zypper install at
Включить автоматический запуск Сервиса демона at
В некоторых дистрибутивах автоматически запускается демон «at» при загрузке.
Другие не хотят. Проверьте с помощью:
systemctl is-enabled atd.service
Если система говорит disabled – включите:
sudo systemctl enable atd.service
И запустите демон
sudo systemctl start atd.service
Как указать дату и время для планирования команду “at”
Вы можете использовать любую из следующих форм.
1. Запустите команду через указанное количество минут, часов, дней или недель.
at now + 10 minutes at now + 10 hours at now + 10 days at now + 10 weeks
2. Запустите в точное время:
at 23:10
Если уже 12:00, и вы запускаете:
at 11:00
Тогда команда будет запущена завтра, в указанное время.
3. Выполнить в точное время и дату:
at 12:00 December 31
Другие альтернативные способы указания времени и даты можно найти в онлайн-справочнике “at”.
Как использовать команду “at”
Как вы, возможно, заметили, после того, как вы укажете запланированное время, вы увидите сообщение, похожее на следующее:
Здесь вы просто вводите команды, которые хотите запустить.
At выполнит команду под вашим текущим именем пользователя.
Введите команду, которую вы хотите запустить в указанное время, и нажмите Enter.
Если вы хотите выполнить следующую команду, повторите ту же процедуру.
Когда вы закончите, нажмите Ctrl + D. <EOT> отображазится при нажатии этих клавиш, а затем время, когда будут выполнены команды.
Если вы хотите запускать команды, требующие прав суперпользователя, не используйте sudo.
Помните, что команда будет выполняться без присмотра, поэтому sudo не будет работать, потому что никто не может ввести пароль.
Вместо этого сначала войдите в систему как пользователь root:
sudo -i
и затем используйте команду «at» как обычно.
Теперь все команды будут выполняться как root, а не как обычный пользователь.
После того, как вы запланировали свою команду, введите:
exit
В примере, представленном на этом снимке экрана, отключение было запланировано через две минуты. Вы можете адаптировать это для своих собственных целей.
Если компьютер включен, он просто запустится на следующей загрузке (если прошло его время).
Например, если вы планируете задание на 3 часа дня, выключаете его в 2 часа дня и включаете питание в 4 часа дня, задание будет выполняться в 4 часа дня.
Просмотр и / или удаление запланированных заданий
Вы можете просматривать задания в очереди с помощью:
atq
или
at -l
Чтобы увидеть, какие команды запланированы в задании, используйте префикс номера этого задания.
at -c 22
Последние строки вывода покажут вам команды, которые вы запланировали.
Чтобы удалить работу, используйте номер префикса, например так:
atrm 22
Задание «at» для запуска графических приложений
Сначала выясните текущее значение отображаемой переменной:
echo $DISPLAY
Обычно это :0
echo $DISPLAY
:0
В приглашении «at» установите для переменной DISPLAY предыдущее значение (export DISPLAY =: 0) и запустите необходимое графическое приложение.
Команды, использованные на предыдущем скриншоте, приведут к следующему.
Теперь графическое приложение будет «лицом к лицу» с вами и тем самым напоминать вам о важной работе лучше, чем по телефону.
Вывод
Использовать «at» легко.
Более сложная часть – это творческий способ действовать.