GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist das Linux-Äquivalent zum Windows-Startup?

Etwas wie Cron?

Beachten Sie den @reboot Eintrag

Dies ist der flexibelste Ansatz und am ehesten den „Geplanten Tasks“ von Windows ähnlich (eigentlich besser).


Xorg-Autostart

Abgesehen von Startskripten auf Systemebene hat Ihre Desktop-Umgebung möglicherweise ihre eigene Art, Programme automatisch auszuführen. Der Ordner .config/autostart soll eine Desktop-neutrale Möglichkeit sein, Autorun-Einträge zu definieren. /etc/xdg/autostart dient der systemweiten Konfiguration. Details zur Spezifikation unter http://developer.gnome.org/autostart-spec/.

Für LXDE können Autostart-Einträge auch in ~/.config/lxsession/LXDE/autostart gesetzt werden .

Es ist etwas anders, wenn Sie Ihre Skripte nach ausführen müssen das Netzwerk ist in Betrieb. In diesem Fall sollten Sie die speziellen Post-Connect-Skripte überprüfen, die für Ihren Netzwerkmanager definiert werden können. Sowohl NetworkManager und wicd haben ihre eigenen Möglichkeiten, Post-Connect-Autorun-Einträge anzugeben. Wenn das Netzwerk über ifupdown konfiguriert ist , dann können Post-up-Skripte im /etc/network/if-up.d/ platziert werden Mappe. Aber ein besserer Ansatz zum Ausführen von Post-Connect-Skripten könnte systemd sein (für Systeme, die dies unterstützen, was die Mehrheit der modernen Distributionen ist).

Autostart als Systemdienst

Wenn das Objekt, das Sie automatisch starten möchten, keine grafische Anwendung ist, die einen Desktop erfordert, sollten Sie am besten die Verwendung von Autostart-Funktionen vermeiden, die von xorg oder Ihrer aktuellen Desktop-Umgebung bereitgestellt werden.

systemd ist in vielen modernen Distributionen allgegenwärtig geworden und bietet viel Kontrolle und Flexibilität in Bezug darauf, wie Ihre Dienste gestartet und ausgeführt werden.

Ich fasse einige Vorteile zusammen (systemd kann viel mehr ):

  • Als root oder als bestimmter Benutzer ausführen:z.B. User=myuser
  • Dienste bei Fehlern mit konfigurierbaren Timeouts neu starten:Restart=on-failure|on-watchdog|on-abnormal|always
  • Einstellung des Diensttyps:Type=simple|forking|oneshot|notify|dbus
  • Stellen Sie Startvoraussetzungen und Abhängigkeiten ein, d. h. Sie können Ihren Dienst so einstellen, dass er startet, nachdem das Netzwerk hochgefahren ist (Wants=network-online.target im [Unit] Abschnitt).

Ein Beispieldienst, der einen Telegram-Cli-Daemon startet. Platzieren Sie es in /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

Jetzt können Sie den Dienst für den Autostart aktivieren:

sudo systemctl enable tg

Starten Sie den Dienst:

sudo systemctl start tg

Stoppen Sie den Dienst:

sudo systemctl stop tg

Prüfen Sie den Status:

systemctl status tg

Deaktivieren Sie den Dienst:

sudo systemctl disable tg

Um Ihnen zusätzliches Tippen zu ersparen, können Sie Ihren ~/.bashrc hinzufügen die Zeile alias sc='sudo systemctl $*' dann können Sie die obigen Befehle verkürzen, um z. sc start tg .

Weitere Informationen:

  • Systemd verstehen
  • systemd-Dienste
  • systemd-Einheiten

Ja, es ist möglich, Programme beim Start unter Linux auszuführen, indem die Pfade zu ausführbaren Dateien in rc.local definiert werden die sich entweder in /etc befindet oder /etc/rc.d Verzeichnis, z.B.:

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

Hinweis:Vergessen Sie nicht, Ausführungsrechte wie in der Dokumentation der Datei beschrieben zu vergeben, also Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.


Linux
  1. Was ist das Linux-Äquivalent zur DOS-Pause?

  2. Was ist der richtige Weg, um einen Mongod-Dienst unter Linux / OS X zu starten?

  3. Was ist das Äquivalent zu getch() &getche() in Linux?

  4. Was wäre das Äquivalent der Win32-API in Linux?

  5. Was ist das Unix/Linux-Äquivalent von Registered I/O?

Was ist die Shell unter Linux?

Was ist der Kill-Befehl in Linux?

Was ist das C++-Äquivalent für AutoResetEvent unter Linux?

Was entspricht dem Linux-Befehl sudo fdisk -l in MacOS?

Was ist das Äquivalent von Active Directory unter Linux

Was ist das FreeBSD-Äquivalent von Linux update-rc.d?