Що таке еквівалент Linux для запуску Windows?


16

Чи є якийсь спосіб додати додаток / скрипт до запуску Linux, щоб кожен раз, коли система завантажується, вона буде виконуватися?

Я шукаю якийсь автоматизований спосіб, тобто користувач не повинен додавати це за допомогою роботи cron чи щось подібне.



якщо це ubuntu, просто використовуйте $ gnome-session-properties
user3804598

Відповіді:


11

Щось на кшталт Крона ?

Зверніть увагу на @rebootзапис

Це найскладніший підхід і той, який найбільше подобається Windows "Заплановані завдання" (краще насправді).


чи можна додати роботу в CRON без наміру користувача?
Сурав

так. просто напишіть /etc/cron.dабо зателефонуйте на crontab зі своєї програми, не знаючи їх.

Що ви маєте на увазі? Якщо ви маєте на увазі вручну додати одне програмно, то так. Crontabs - це лише текстові файли.

10

Автозапуск Xorg

Крім сценаріїв запуску на системному рівні, у середовищі робочого столу може бути свій власний спосіб автоматичного запуску програм. Папка .config/autostartповинна бути нейтральним для настільних способів визначення записів автозапуску. /etc/xdg/autostartпризначений для загальної системи. Деталі про специфікацію можна знайти на веб- сайті http://developer.gnome.org/autostart-spec/ .

Для автозапуску LXDE також можна встановити записи ~/.config/lxsession/LXDE/autostart.

Трохи інакше, якщо вам потрібно запустити сценарії після запуску мережі. У цьому випадку слід перевірити спеціальні сценарії після підключення, які можна визначити для вашого менеджера мережі. І NetworkManager, і wicd мають свої способи введення записів автозапуску після підключення. Якщо мережа налаштована через ifupdown, то сценарії після публікації можна помістити в /etc/network/if-up.d/папку. Але кращий підхід до запуску сценаріїв після підключення може бути системним (для систем, які його підтримують, що є більшістю сучасних дистрибутивів).

Автозапуск як системна служба

Якщо ви хочете автозапустити, це не графічний додаток, для якого потрібен робочий стіл, то краще уникати використання будь-яких засобів автоматичного запуску, наданих xorg або вашим поточним середовищем робочого столу.

systemd стала всюдисущою у багатьох сучасних дистрибутивах, і вона пропонує багато контролю та гнучкості з точки зору того, як запускаються ваші послуги та як вони працюють.

Я підсумую деякі переваги ( systemd може зробити набагато більше ):

  • Запустити як root або як конкретний користувач: напр User=myuser
  • Перезапустити служби при збої з настроюваними таймаутами: Restart=on-failure|on-watchdog|on-abnormal|always
  • Налаштування типу послуги: Type=simple|forking|oneshot|notify|dbus
  • Встановіть передумови та залежності запуску, тобто ви можете встановити свою послугу після запуску мережі ( Wants=network-online.targetу [Unit]розділі).

Приклад служби, яка запускає демон телеграми-кліпу. Помістіть його /etc/systemd/system/tg.service.

[Unit]
Description=MyDaemon
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/bin/telegram-cli -k /etc/telegram-cli/tg-server.pub -W -P 1234 -d -vvvRC
ExecStop=/usr/bin/pkill -f telegram-cli

User=jicu

[Install]
WantedBy=multi-user.target

Тепер ви можете ввімкнути службу для автоматичного запуску:

sudo systemctl enable tg

Запуск послуги:

sudo systemctl start tg

Припинення послуги:

sudo systemctl stop tg

Перевірте статус:

systemctl status tg

Вимкнути послугу:

sudo systemctl disable tg

Щоб заощадити додатковий набір тексту ви можете додати в вашій ~/.bashrcлінії , alias sc='sudo systemctl $*'то ви зможете скоротити команди вище, наприклад sc start tg.

ПРИМІТКА. Якщо ви використовували, cronтоді знаєте, що записи crontab виконуються в обмеженому середовищі - те ж саме стосується systemd: завжди використовуйте абсолютні шляхи і не допускайте жодних визначених змінних. Явно встановіть будь-які змінні, від яких залежать ваші сценарії. systemd не використовуватиме вашого користувача .bashrcта $PATH.

Більше інформації:


7

Так, можна запустити програми при запуску в Linux, визначивши шляхи до виконуваних файлів, rc.localякі перебувають у каталозі /etcабо в /etc/rc.dкаталозі, наприклад:

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
/path/to/executable

Примітка: не забудьте призначити виконавчі права, як описано в документації файлу, тобто Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.


додавання запису у файл запускатиме програму щоразу?
Сурав

2
Щоразу при перезавантаженні, так. Якщо ви хочете регулярно проводити заплановані роботи (кожен день, годину, тиждень або будь-яку дивну комбінацію), тоді cronпланувальник - ваш друг.

3
  1. Пошук за Startup applicationsдопомогою домашньої кнопки
  2. Клацніть Add
  3. Введіть ім'я для виклику програми (будь-яке ім’я буде)
  4. У Startup command boxкоманді введіть
  5. Клацніть OK(у списку повинна з’явитися нова команда)
  6. Клацніть Close

Перевірте, перезавантажившись або вийдіть із системи та поверніться до системи.

Джерело: https://help.ubuntu.com/community/AddingProgramToSessionStartup


1

Кожен дистрибутив використовує кожну власну техніку завантаження, тому потрібно переглянути документи для вашого дистрибутива. /etc/rc.local - це місце, куди можна розмістити деякі автоматизовані сценарії, але він справді застарів. Зараз більшість систем на базі Linux використовує рівні запуску або завантаження системи, тому більшість завдань з автоматичним запуском можна контролювати високоякісно.


0

Тут я знайшов свою відповідь: /programming/7221757/run-automatically-program-on-startup-under-linux-ubuntu Я зміг створити файл / сценарій, щоб вимкнути трекпад, коли я мій сеанс Linux Ubuntu 12.10.


3
Радий, що ви знайшли рішення, чи можете ви включити резюме кроків у свою відповідь, так що ця відповідь є кориснішою, ніж просто посилання. Спасибі!
slm

Шукав спосіб автоматизації та відключення трекпада при запуску. Команда, яку я ввів у термінал, була: "sudo modprobe -r psmouse". Це вимкне трекпад у поточному сеансі. Я хотів автоматизувати це під час завантаження. Я провів кілька досліджень і написав сценарій, змінивши файл /etc/rc.local, додавши 'sudo modprobe -r psmouse. Потім видайте такі команди з терміналу: 'sudo mv / filename /etc/init.d/' 'sudo chmod + x /etc/init.d/filename' 'sudo update-rc.d за замовчуванням назви файлу' Тепер сенсорна панель вимкнена при запуску.
CatGuyTX
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.