Co to jest Linux Startup Windows?

16

Czy jest jakiś sposób na dodanie aplikacji / skryptu do uruchamiania systemu Linux, aby za każdym razem, gdy system uruchamia się, będzie uruchamiany?

Szukam jakiegoś zautomatyzowanego sposobu, tzn. Użytkownik nie powinien dodawać tego według zadania crona ani czegoś takiego.

Sourav
źródło
jeśli jest to Ubuntu, po prostu użyj $ gnome-session-properties
użytkownik3804598

Odpowiedzi:

11

Coś jak Cron ?

Zanotuj @reboot wpis

Jest to najbardziej elastyczne podejście i najbardziej podobne do „Zaplanowanych zadań” systemu Windows (w rzeczywistości lepiej).

kevlar1818
źródło
czy możliwe jest dodanie pracy w CRON bez intencji użytkownika?
Sourav,
tak. po prostu napisz /etc/cron.dlub wywołaj crontab ze swojego programu bez ich wiedzy.
Co masz na myśli? Jeśli masz na myśli ręczne dodanie jednego programowo, to tak. Crontabs to tylko pliki tekstowe.
10

Automatyczne uruchomienie Xorg

Oprócz skryptów uruchamiania na poziomie systemu, środowisko pulpitu może mieć własny sposób na automatyczne uruchamianie programów. Folder .config/autostartpowinien być neutralnym dla komputera sposobem definiowania wpisów autorun. /etc/xdg/autostartjest przeznaczony do konfiguracji ogólnosystemowej. Szczegółowe informacje na temat specyfikacji znajdują się na stronie http://developer.gnome.org/autostart-spec/ .

W przypadku LXDE można również ustawić wpisy autostartu ~/.config/lxsession/LXDE/autostart .

Trochę inaczej jest, jeśli trzeba uruchamiać skrypty po uruchomieniu sieci. W takim przypadku należy sprawdzić specjalne skrypty po połączeniu, które można zdefiniować dla menedżera sieci. Zarówno NetworkManager, jak i wicd mają własne sposoby określania wpisów autorun po podłączeniu. Jeśli sieć jest skonfigurowana za pośrednictwem ifupdown, skrypty post-up można umieścić w/etc/network/if-up.d/ folderze. Lepszym podejściem do uruchamiania skryptów po połączeniu może być systemd (dla systemów, które go obsługują, co stanowi większość współczesnych dystrybucji).

Autostart jako usługa systemowa

Jeśli rzecz, którą chcesz uruchomić automatycznie, nie jest aplikacją graficzną, która wymaga komputera stacjonarnego, najlepiej unikać korzystania z funkcji autostartu udostępnianych przez xorg lub obecne środowisko pulpitu.

systemd stał się wszechobecny w wielu nowoczesnych dystrybucjach i oferuje dużą kontrolę i elastyczność w zakresie uruchamiania usług i ich działania.

Podsumuję niektóre korzyści ( systemd może zrobić znacznie więcej ):

  • Uruchom jako root lub jako określony użytkownik: np User=myuser
  • Uruchom ponownie usługi w przypadku awarii z konfigurowalnymi limitami czasu: Restart=on-failure|on-watchdog|on-abnormal|always
  • Ustawianie rodzaju usługi: Type=simple|forking|oneshot|notify|dbus
  • Określ warunki i zależności związane z uruchomieniem, tzn. Możesz ustawić, aby usługa była uruchamiana po uruchomieniu sieci ( Wants=network-online.targetw [Unit]sekcji).

Przykładowa usługa uruchamiająca demona telegram-cli. Umieść to w /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

Teraz możesz włączyć usługę automatycznego uruchamiania:

sudo systemctl enable tg

Uruchom usługę:

sudo systemctl start tg

Zatrzymaj usługę:

sudo systemctl stop tg

Sprawdzić stan:

systemctl status tg

Wyłącz usługę:

sudo systemctl disable tg

Aby zaoszczędzić dodatkowego pisania, możesz dodać w ~/.bashrcwierszu, alias sc='sudo systemctl $*'a następnie będziesz mógł skrócić powyższe polecenia do np sc start tg.

UWAGA: Jeśli cronużywałeś, pamiętaj, że wpisy crontab są uruchamiane w ograniczonym środowisku - to samo dotyczy systemd: zawsze używaj ścieżek bezwzględnych i nie przyjmuj żadnych założeń dotyczących zmiennych definiowanych. Jawnie ustaw dowolne zmienne, od których zależą twoje skrypty. systemd nie będzie używać twojego użytkownika .bashrci $PATH.

Więcej informacji:

ccpizza
źródło
7

Tak, możliwe jest uruchamianie programów podczas uruchamiania w systemie Linux poprzez zdefiniowanie ścieżek do plików wykonywalnych rc.localznajdujących się w katalogu /etclub /etc/rc.d, np .:

#!/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

Uwaga: nie zapomnij przypisać praw do plików wykonywalnych zgodnie z opisem w dokumentacji pliku, tj Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.

Dirk Eddelbuettel
źródło
dodanie wpisu w pliku spowoduje uruchomienie programu za każdym razem?
Sourav,
2
Tak, przy każdym ponownym uruchomieniu komputera. Jeśli chcesz regularnie planowanych zadań (każdego dnia, godziny, tygodnia lub dowolnej nieparzystej kombinacji), cronharmonogram jest Twoim przyjacielem.
3
  1. Wyszukaj za Startup applicationspomocą przycisku Home
  2. Kliknij Add
  3. Wpisz nazwę, aby zadzwonić do aplikacji (wystarczy dowolna nazwa)
  4. W Startup command boxwprowadź polecenie
  5. Kliknij OK (powinieneś zobaczyć nowe polecenie na liście)
  6. Kliknij Close

Testuj przez ponowne uruchomienie lub wylogowanie i ponowne zalogowanie.

Źródło: https://help.ubuntu.com/community/AddingProgramToSessionStartup

koder1111
źródło
1

Każda dystrybucja wykorzystuje każdą własną technikę ładowania początkowego, więc spójrz na dokumentację swojej dystrybucji. /etc/rc.local to miejsce, w którym można umieścić zautomatyzowane skrypty, ale jest naprawdę nieaktualne. Obecnie większość systemów opartych na systemie Linux używa poziomów uruchomieniowych lub systemowego ładowania systemu, więc większość zadań autostartu może być dokładnie kontrolowana.

galadog
źródło
0

Znalazłem swoją odpowiedź tutaj: /programming/7221757/run-automatically-program-on-startup-under-linux-ubuntu Byłem w stanie stworzyć plik / skrypt, aby wyłączyć mój gładzik podczas moja sesja Linux Ubuntu 12.10.

CatGuyTX
źródło
3
Cieszę się, że znalazłeś rozwiązanie, czy możesz dołączyć podsumowanie kroków do swojej odpowiedzi, aby ta odpowiedź była bardziej przydatna niż tylko link. Dzięki!
slm
Szukałem sposobu na zautomatyzowanie i wyłączenie mojego gładzika podczas uruchamiania. Polecenie, które wprowadziłem w Terminalu, brzmiało „sudo modprobe -r psmouse”. Wyłączy to gładzik podczas bieżącej sesji. Chciałem zautomatyzować to podczas rozruchu. Zrobiłem trochę badań i napisałem skrypt, modyfikując plik /etc/rc.local, dodając 'sudo modprobe -r psmouse. Następnie wydając następujące polecenia z terminala: „sudo mv / filename /etc/init.d/” „sudo chmod + x /etc/init.d/filename” „domyślne ustawienia sudo update-rc.d” Teraz touchpad jest wyłączony Podczas uruchamiania.
CatGuyTX