Автозапуск програм у Linux
(крім деяких засобів системи ініціалізації.)
Буває потрібно запускати програми в якийсь час або після настання якоїсь події. Якщо потреба в запуску часто або немає можливості перебувати за комп'ютером у потрібний час, або неможливо відстежити подію вручну - слід налагодити автоматичний запуск програм.
Традиційні в UNIX засоби автозапуску програм у певний час ("планувальники завдань") - at і cron (та їх демони із суфіксом d). Програма at запускає зазначену програму одноразово; cron – регулярно за розкладом. Якщо, звичайно, комп'ютер у потрібний час буде включено. Інакше at запустить запізнілу команду якнайшвидше, а cron - наступного разу (якщо різниця в часі більше трьох годин, інакше - якнайшвидше).
Заплановані команди для at приймаються із попередньо підготовленого файлу опцією -f або зі стандартного введення. Також програма може приймати нове завдання інтерактивно, подібно до оболонки або cat. Спочатку потрібно запустити at з аргументами – часом та датою запуску (наприклад, лише час 09:30). З'явиться додаткове запрошення командного рядка. Введення команди завершують Enter, а потім поєднанням Ctrl D. Введена команда буде запущена за допомогою спрощеної оболонки /bin/sh.
Формат часу тут дуже різноманітний, може включати невеликі осмислені вирази англійською, наприклад:
echo 'notify-send "Have a break!"' at noon tomorrow
Програма atq показує пронумеровану чергу завдань (job queue); докладніше про завдання - at з опцією -c та номером; видалити завдання - atrm та номер. Файли "at.allow" і "at.deny" в / etc містять списки користувачів, яким відповідно дозволено і заборонено звертатися до at.
Сама at виконується зі своїмоточенням (зазвичай root), тому завдання виведення видимого повідомлення може провалитися. Програма notify-send не вимагає додаткових дій, коли надсилаєте повідомлення собі. Іншим програмам (наприклад: xmessage або gxmessage, zenity) може знадобитися явно вказати змінну дисплея:
echo 'env DISPLAY=:0.0 xmessage "Hello!"' at 15:10
Щоб вивести повідомлення в текстову консоль, може знадобитися перенаправити текст у з'ясований заздалегідь (програмами ps, tty, w) файл консолі:
echo 'echo "Hello!" > /dev/pts/1' at 09:30
Хоча для надсилання повідомлення краще скористатися програмою wall або write. Або локальною електронною поштою. Документація: man-сторінки at, echo, mail або mailx, notify-send, tty, wall, write, xmessage.
Файли завдань для at і cron зберігаються у каталозі /var/spool/cron. Файли загальносистемних налаштувань cron - /etc/crontab і готові каталоги, ім'я яких починається на cron, в /etc.
У systemd вбудовано свою функціональність запуску програм за часом за допомогою об'єктів типу "таймер" (".timer"). Документація: man "systemd.timer".
Щоб автоматично запускати якісь програми під час запуску текстового сеансу, можна записати їх команди у стартові файли оболонки (наприклад, файл "
/.bashrc"). Команди слід записувати як фонові (закінчувати символом &).
Щоб автоматично запускати якісь програми під час запуску графічного сеансу, їх сценарії чи файли ".desktop" потрібно помістити в каталог "
/.config/autostart" (загальний каталог - /etc/xdg/autostart). Готові файли ".desktop" зазвичай зберігаються в каталозі "
/.local/share/applications" (загальний каталог - /usr/share/applications/). У програмах налаштування графічних середовищ можуть бути модулі для налаштуваннясписку програм, що запускаються. Старіший спосіб - додавання команд у файл-сценарій "
/.xprofile" (аналогічно файлу "
Набір програм "inotify tools" - засіб автозапуску програм за якоюсь подією файлової системи (наприклад, якщо файл був змінений). Приклад: