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.
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.
Antworten:
So etwas wie Cron ?
Beachten Sie den @rebootEintrag
Dies ist der flexibelste Ansatz und derjenige, der Windows "Geplante Aufgaben" am ähnlichsten ist (eigentlich besser).
/etc/cron.dihr programm oder rufen sie crontab auf, ohne dass sie es merken.
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).
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 ):
User=myuserRestart=on-failure|on-watchdog|on-abnormal|alwaysType=simple|forking|oneshot|notify|dbusWants=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 Siesystemdimmer absolute Pfade und gehen Sie nicht davon aus, dass Variablen definiert sind. Legen Sie explizit alle Variablen fest, von denen Ihre Skripte abhängen.systemdnicht Ihre Benutzer verwenden.bashrcund$PATH.
Mehr Info:
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.
Startup applicationsVerwendung der Home-TasteAdd Startup command boxgeben Sie den BefehlOK(Ihr neuer Befehl sollte in der Liste angezeigt werden.)Close Testen Sie, indem Sie neu starten oder sich abmelden und wieder anmelden.
Quelle: https://help.ubuntu.com/community/AddingProgramToSessionStartup
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.
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.