Was ist das Linux-Äquivalent zu Windows Startup?

16

Gibt es eine Möglichkeit, dem Linux-Start eine Anwendung / ein Skript hinzuzufügen, damit es bei jedem Systemstart ausgeführt wird?

Ich suche einen automatisierten Weg, dh der Benutzer sollte dies nicht per Cronjob oder Ähnlichem hinzufügen.

Sourav
quelle
Siehe auch diese SO Antwort: Führen Sie das Programm automatisch beim Start unter Linux Ubuntu
Abhishek Gupta
wenn es ubuntu ist, benutze einfach $ gnome-session-properties
user3804598

Antworten:

11

So etwas wie Cron ?

Beachten Sie den @rebootEintrag

Dies ist der flexibelste Ansatz und derjenige, der Windows "Geplante Aufgaben" am ähnlichsten ist (eigentlich besser).

kevlar1818
quelle
Ist es möglich, einen Job in CRON hinzuzufügen, ohne dass der Benutzer dies beabsichtigt?
Sourav
Ja. schreiben sie einfach in /etc/cron.dihr programm oder rufen sie crontab auf, ohne dass sie es merken.
Was meinen Sie? Wenn Sie manuell programmgesteuert hinzufügen möchten, dann ja. Crontabs sind nur Textdateien.
10

Xorg-Autostart

Abgesehen von Startskripten auf Systemebene verfügt Ihre Desktop-Umgebung möglicherweise über eine eigene Methode zum automatischen Ausführen von Programmen. Der Ordner .config/autostartsoll eine desktopneutrale Methode zum Definieren von Autorun-Einträgen sein. /etc/xdg/autostartist für die systemweite Konfiguration. Details zur Spezifikation unter http://developer.gnome.org/autostart-spec/ .

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

Es ist ein bisschen anders, wenn Sie Ihre Skripte ausführen müssen, nachdem das Netzwerk funktioniert hat. In diesem Fall sollten Sie die speziellen Post-Connect-Skripts überprüfen, die für Ihren Netzwerkmanager definiert werden können. Sowohl NetworkManager als auch wicd haben ihre eigenen Möglichkeiten, Autorun-Einträge nach dem Verbinden anzugeben. Wenn das Netzwerk über konfiguriert wurde ifupdown, können Post-Up-Skripte in den /etc/network/if-up.d/Ordner gestellt werden. Ein besserer Ansatz für die Ausführung von Post-Connect-Skripten könnte jedoch systemd sein (für Systeme, die dies unterstützen, was die Mehrheit der modernen Distributionen darstellt).

Autostart als Systemdienst

Wenn das, was Sie automatisch starten möchten, keine grafische App ist, für die ein Desktop erforderlich ist, vermeiden Sie am besten die Verwendung von Autostart-Funktionen, 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 auf die Art und Weise, wie Ihre Dienste gestartet werden und wie sie ausgeführt werden.

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

  • Als root oder als bestimmter Benutzer ausführen: zB User=myuser
  • Starten Sie die Dienste bei einem Fehler mit konfigurierbaren Zeitüberschreitungen neu: Restart=on-failure|on-watchdog|on-abnormal|always
  • Festlegen des Diensttyps: Type=simple|forking|oneshot|notify|dbus
  • Stellen Sie Startvoraussetzungen und Abhängigkeiten her, dh Sie können Ihren Dienst so einstellen, dass er nach dem Hochfahren des Netzwerks startet ( Wants=network-online.targetsiehe [Unit]Abschnitt).

Ein Beispieldienst, der einen Telegramm-Cli-Dämon startet. Legen 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

Beenden Sie den Dienst:

sudo systemctl stop tg

Überprüfen Sie den Status:

systemctl status tg

Deaktivieren Sie den Dienst:

sudo systemctl disable tg

Um Ihnen zusätzliche Tipparbeit zu ersparen, können Sie ~/.bashrcdie Zeile hinzufügen und alias sc='sudo systemctl $*'dann die obigen Befehle auf z sc start tg. B. kürzen .

HINWEIS: Wenn Sie cronCrontab-Einträge verwendet haben, wissen Sie, dass sie in einer eingeschränkten Umgebung ausgeführt werden. Dies gilt auch für Folgendes: Verwenden Sie systemdimmer absolute Pfade und gehen Sie nicht davon aus, dass Variablen definiert sind. Legen Sie explizit alle Variablen fest, von denen Ihre Skripte abhängen. systemd nicht Ihre Benutzer verwenden .bashrcund $PATH.

Mehr Info:

ccpizza
quelle
7

Ja, es ist möglich, Programme beim Start unter Linux auszuführen, indem die Pfade zu ausführbaren Dateien definiert werden, rc.localdie sich entweder im Verzeichnis /etcoder befinden /etc/rc.d, z.

#!/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, die in der Dokumentation der Datei beschriebenen ausführbaren Rechte zuzuweisen Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.

Dirk Eddelbüttel
quelle
Durch Hinzufügen eines Eintrags in der Datei wird das Programm jedes Mal gestartet.
Sourav
2
Ja, bei jedem Neustart. Wenn Sie regelmäßig geplante Jobs (jeden Tag, jede Stunde, jede Woche oder eine ungerade Kombination) möchten, ist der cronPlaner Ihr Freund.
3
  1. Suche nach Startup applicationsVerwendung der Home-Taste
  2. Klicken Add
  3. Geben Sie einen Namen ein, um die Anwendung aufzurufen (jeder Name reicht aus)
  4. Im Startup command boxgeben Sie den Befehl
  5. Klicken Sie auf OK(Ihr neuer Befehl sollte in der Liste angezeigt werden.)
  6. Klicken Close

Testen Sie, indem Sie neu starten oder sich abmelden und wieder anmelden.

Quelle: https://help.ubuntu.com/community/AddingProgramToSessionStartup

coder1111
quelle
1

Jede Distribution verwendet eine eigene Bootstrap-Technik. Sie müssen sich daher die Dokumentation für Ihre Distribution ansehen. /etc/rc.local ist ein Ort, an dem Sie einige automatisierte Skripte platzieren können, aber es ist wirklich veraltet. Jetzt verwenden die meisten Linux-basierten Systeme Runlevel oder systemd-Bootstraping, sodass die meisten automatisch gestarteten Jobs feinstufig gesteuert werden können.

Galadog
quelle
0

Ich habe meine Antwort hier gefunden: /programming/7221757/run-automatically-program-on-startup-under-linux-ubuntu Ich konnte eine Datei / ein Skript erstellen, um mein Trackpad auszuschalten, während ich in war meine Linux Ubuntu 12.10 Sitzung.

CatGuyTX
quelle
3
Ich bin froh, dass Sie eine Lösung gefunden haben. Fügen Sie Ihrer Antwort eine Zusammenfassung der Schritte hinzu, damit diese Antwort nützlicher ist als nur ein Link. Vielen Dank!
SLM
Ich suchte nach einer Möglichkeit, mein Trackpad beim Start zu automatisieren und auszuschalten. Der Befehl, den ich in Terminal eingegeben habe, war 'sudo modprobe -r psmouse'. Dadurch wird das Trackpad in der aktuellen Sitzung ausgeschaltet. Ich wollte dies beim Booten automatisieren. Ich recherchierte und schrieb ein Skript, indem ich die Datei /etc/rc.local modifizierte und 'sudo modprobe -r psmouse' hinzufügte. Geben Sie dann die folgenden Befehle vom Terminal aus: 'sudo mv / dateiname /etc/init.d/' 'sudo chmod + x /etc/init.d/dateiname' 'sudo update-rc.d dateiname defaults' Das Touchpad ist jetzt ausgeschaltet am Anfang.
CatGuyTX