
У меня есть скрипт, который я хочу запустить при запуске Linux, я знаю, что в Windows есть папка автозагрузки, и в Linux тоже есть. Я провел некоторые исследования и нашел различные файлы со многими противоречивыми ответами. Путь:
/etc/systemd/system
кажется, используется. Еще один:
/etc/rc.local
и я также видел:
/etc/init.d
Мне просто нужен путь для эквивалента папки автозагрузки Windows в Linux, которая существует во всех или, по крайней мере, в большинстве дистрибутивов Linux. Я также хочу иметь возможность поместить скрипт в этот каталог, чтобы он запускался при запуске. Какой путь может удовлетворить этим требованиям.
решение1
Большинство форм автозапуска зависят от вашей установки: используемой системы инициализации (sysv, systemd или upstart), среды рабочего стола (GNOME/KDE или не-XDG) и т. д.
Cron существует в большинстве систем Linux и может использоваться для автозапуска. Добавьте строку в ваш /etc/crontab
:
@reboot /usr/bin/blah
где /usr/bin/blah
находится команда, которую вы хотите выполнить.
Если вы хотите, чтобы программа запускалась при каждом входе в систему, и вы используете XDG-совместимую среду рабочего стола (например, GNOME или KDE), поместите файл .desktop
в ~/.config/autostart
. Пример файла .desktop
см. вАрх вики.
В качестве альтернативы, если ваш дистрибутив Linux использует systemd, вы можете написать файл unit. Например:
[Unit]
Description=autostart something
[Service]
Type=oneshot
ExecStart=/usr/bin/blah
[Install]
WantedBy=multi-user.target
Вставьте текст выше /etc/systemd/system/blah.service
и запустите systemctl daemon-reload
как root, чтобы зарегистрировать службу. Затем запустите, systemctl enable blah.service
чтобы включить автозапуск вашей новой службы.
Подробную информацию о том, как написать файл модуля systemd, см.эта ссылка.