Wenn jemand auch WANN und WO zeigen könnte, wäre das großartig. Ich sage das, weil ich weiß, dass es mindestens zwei Möglichkeiten gibt, ein Skript zu starten, das
ausgelöst
1
Dieser gesamte Antwort-Thread ist ein Chaos. Das Stack Exchange-Format scheint für diese Frage nicht am besten geeignet zu sein
Gabriel Fair
1
Es ist eigentlich ziemlich unterhaltsam. Wie viele verschiedene Möglichkeiten könnte es geben?
Devios1
Antworten:
206
Abhängig davon, welche Art von Skripten Sie ausführen müssen. Für Dienste und dergleichen sollten Sie upstart verwenden . Aber für ein Benutzerskript sollten diese von gnome als Sitzungsskripte gestartet werden! Schauen Sie unter System> Preferences> Startup Applications nach.
Nebenbei bemerkt, wenn Sie einige Skripts für die Terminalanmeldung benötigen, können Sie diese der Datei .bash_login in Ihrem Ausgangsverzeichnis hinzufügen .
Für 14.04 und älter
Ein einfacher Befehl (der nicht ausgeführt werden muss) könnte einen Upstart-Job wie den folgenden verwenden:
start on startup
task
exec /path/to/command
Speichern Sie diese in einer .confDatei in /etc/init(wenn Sie es brauchen als root ausführen , wenn das System bootet) oder ~/.config/upstart(wenn Sie es als Benutzer ausgeführt werden, wenn Sie sich anmelden).
Könnten Sie in Anbetracht der Funktionsweise von SO und StackExchange ein Beispiel für ein Startskript geben und wo es platziert werden würde? Das würde dies zu einer viel besseren Antwort machen. Dein Link sagt, dass es nicht gepflegt wird und das Kochbuch zu lesen, das riesig ist. Ich habe keine Ahnung, wo ich anfangen soll.
Ehtesh Choudhury
2
Was ist, wenn ich den Befehl als root ausführen muss?
Dopatraman
1
@dopatraman Die Antwort besagt, dass alle Prozesse mit diesem Namen als root ausgeführt werden.
AStopher
4
Bitte aktualisieren Sie diese Antwort, um zu erklären, was auf Systemen zu tun ist, auf denen systemd und nicht upstart ausgeführt wird (Ubuntu 15.04+).
3
Diese Antwort ergibt für mich keinen Sinn. Die in aufgeführten Anwendungen system->pref->startup applicationssind weder in /etc/init/noch in zu finden ~/.config/upstart. So wo Start - Anwendungen definiert?
Blauhirn
553
Ein Ansatz ist das Hinzufügen einer @ Reboot- Cron- Task:
Mit Running crontab -ekönnen Sie Ihren Cron bearbeiten.
Eine Zeile wie diese hinzufügen:
@reboot /path/to/script
Führt dieses Skript aus, sobald Ihr Computer hochfährt.
Das @rebootSchlüsselwort ist ein guter Tipp, da es nicht allgemein bekannt ist.
Jathanismus
12
Nett. Irgendeine Idee genau wann dies auslöst?
Oli
2
Also ... würde dies nicht funktionieren, wenn ich die Stromversorgung verlieren und den PC nach Wiederherstellung der Stromversorgung wieder einschalten würde?
Mike Wills
18
@siamii: man 5 crontabsagt, dass dies @rebootbeim Start ausgeführt wird (wenn der Cron-Daemon gestartet wird).
jfs
9
Das ist fantastisch. Bisher scheint dies besser zu sein, als rc.localweil das System zu diesem Zeitpunkt mehr eingerichtet zu sein scheint (PATH usw.). Es ist seltsam, dass es so schwer ist, nach dem Systemstart etwas aufzurufen .
Karthik T
161
Wie wäre es, wenn Sie den Befehl hinzufügen /etc/rc.local? Sie müssen jedoch sudo-Zugriff verwenden, um diese Datei zu bearbeiten.
Dies beantwortet direkt die Frage, wie Sie einfach einige Skripte ausführen, wenn Ihr System startet. upstart führt eine komplexere Aufgabe aus: Startet Daemon-Prozesse.
Dogweather
1
Also startet upstart Daemon-Prozesse, während /etc/rc.local Bash-Skripte startet?
Donato
5
Sollte es? Das funktioniert heutzutage nicht mehr, oder?
DaVince
4
Arbeite nicht mit Ubuntu 17.04 systemd
qodeninja
3
Beachten Sie, dass Sie, wenn Sie diese Datei selbst erstellen (wie ich), die Datei in "ausführbar mit" ändern chmod 755 rc.localund #!/bin/bashin die erste Zeile einfügen müssen.
Lebenslauf
77
Für 15.04 und später:
Um einen (kurzlebigen) Befehl 1 beim Start mit auszuführen systemd, können Sie eine systemd-Einheit des Typs verwenden OneShot. Erstellen Sie beispielsweise /etc/systemd/system/foo.serviceFolgendes:
[Unit]
Description=Job that runs your user script
[Service]
ExecStart=/some/command
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Sie können mehrere Befehle aus derselben Servicedatei in mehreren ExecStartZeilen ausführen :
[Service]
ExecStart=/some/command
ExecStart=/another/command some args
ExecStart=-/a/third/command ignore failure
Der Befehl muss immer mit dem vollständigen Pfad angegeben werden. Wenn ein Befehl fehlschlägt, wird der Rest nicht ausgeführt. A -vor dem Pfad weist systemd an, einen Exit-Status ungleich Null zu ignorieren (anstatt ihn als Fehler zu betrachten).
Für Benutzersitzungen können Sie ~/.config/systemdstattdessen die Systemeinheit in erstellen . Dies sollte ab 16.04 funktionieren, jedoch nicht mit früheren Versionen von Ubuntu mit systemd (da diese noch Upstart für Benutzersitzungen verwendeten). Benutzersitzungseinheiten können mit den gleichen Befehlen wie bei Systemdiensten gesteuert werden, jedoch mit der --userhinzugefügten Option:
systemctl --user daemon-reload
systemctl --user status foo.service
Shell-Syntax
Beachten Sie, dass systemd im Gegensatz zu Upstart die Exec*Befehle nicht über eine Shell ausführt. Es führt eine begrenzte Variablenerweiterung und mehrere (durch ;) getrennte Befehle aus , aber das war es auch schon, was die Shell-ähnliche Syntax betrifft. Wenn Sie etwas Komplizierteres wünschen, z. B. Umleitung oder Pipes, schließen Sie Ihren Befehl in sh -c '...'oder ein bash -c '...'.
Ist es möglich, eine Priorität für den Job festzulegen? oder angeben, dass es von einem anderen Dienst abhängt, der zuerst gestartet wird?
R3WT
1
@ r3wt ja, dazu gibt es verschiedene möglichkeiten. Das WantedByhier verwendete bewirkt beispielsweise, dass es startet, wenn das multi-user.targeterreicht ist. Sie können verwendet werden Before, After, Requiresusw. Sieheman systemd.unit
muru
@PerlDuck hat nicht nur gefehlt. Vielen Dank!
muru
Bitte. - Übrigens RemainAfterExithängt das von dem Dienst ab, den Sie starten, und seinem gewünschten Verhalten. Zum Beispiel sollte /bin/df -h<s> haben </ s> RemainAfterExit=no.
PerlDuck
@PerlDuck Es gibt nichts inhärent dfdas braucht RemainAfterExit=no. Es sei denn, Sie möchten den Befehl bei jeder Ausführung wiederholt ausführen systemctl start foo.
muru
71
Es gibt verschiedene Möglichkeiten, Befehle automatisch auszuführen:
Das Upstart- System führt alle Skripte aus, von denen es eine Konfiguration im Verzeichnis findet /etc/init. Diese Skripte werden während des Systemstarts (oder als Reaktion auf bestimmte Ereignisse, z. B. eine Anforderung zum Herunterfahren) ausgeführt und sind daher der Ort, an dem Befehle ausgeführt werden, die nicht mit dem Benutzer interagieren. Alle Server werden mit diesem Mechanismus gestartet.
.gnomercJedes Mal, wenn Sie sich bei einer GNOME-Sitzung anmelden, wird automatisch ein Shell-Skript in Ihrem Ausgangsverzeichnis aufgerufen. Sie können dort beliebige Befehle eingeben. Umgebungsvariablen, die Sie in diesem Skript festlegen, werden von jedem Programm angezeigt, das Sie in Ihrer Sitzung ausführen.
Beachten Sie, dass die Sitzung erst startet, wenn das .gnomercSkript beendet ist. Wenn Sie daher ein Programm mit langer Laufzeit automatisch starten möchten, müssen Sie es &an den Programmaufruf anhängen , um es von der laufenden Shell zu trennen.
Über die Menüoption System -> Einstellungen -> Startanwendungen können Sie festlegen, welche Anwendungen beim Start Ihrer grafischen Sitzung gestartet werden sollen (Ubuntu definiert einige davon vor) und diese nach Ihrem Geschmack hinzufügen oder entfernen. Dies hat fast den gleichen Zweck und Umfang des .gnomercSkripts, außer dass Sie die shSyntax nicht kennen müssen (aber Sie können auch kein shProgrammierkonstrukt verwenden).
3) "Dies hat fast den gleichen Zweck und Umfang wie das .gnomerc-Skript", außer dass es .gnomercanscheinend vor dem Laden von Unity und Startup Applicationsanscheinend nach dem Laden von Unity ausgeführt wird. Ich musste ein Programm ausführen, das sich in der Unity-Menüleiste befindet, und das hat in diesem Fall einen großen Unterschied gemacht!
Der Brasilianer
1
@ ruda.almeida Danke für den Hinweis. Die Antwort wurde in den Tagen vor der Einheit geschrieben.
Riccardo Murri
1
sudo update-rc.d myscript.sh defaultsWenn /etc/init.d/myscript.sh Ihr Skript ist, wird es auch beim Start ausgeführt.
Dan Dascalescu
27
$HOME/.config/autostart
Dieser Speicherort enthält die Liste der Startanwendungen.
.desktop Hier kann eine Datei abgelegt werden, die beim Start ausgeführt wird.
Hier "</path/to/script>"wird mit Pfad zu Ihrem ersetzt script.sh ( in der Regel empfohlen, /usr/local/binso dass durch direkt sagen Befehl ausgeführt werden kann myscriptersetzt mit "</path/to/script>").
Beispielbeispiel von script.sh:
#!/bin/bash
<commands to be executed>
exit
Ergebnis: Die
.desktopDatei wird gestartet, von $HOME/.config/autostartder aus das Skript ausgeführt wirdExec=
Daher können Sie Ihr gewünschtes Shell-Skript beim Start ausführen!
Für einfache Dinge können Sie unter System-> Einstellungen-> Sitzungen einen Befehl hinzufügen , der auf den Speicherort Ihres Skripts verweist.
Alternativ können Sie es zu /etc/init.d/rc.local hinzufügen oder einen Upstart- Job ausführen, wenn es sich um ein Zeug auf niedrigerer Ebene handelt .
cron Antwort implementiert anders als oben gewählt
Diese Antwort verwendet immer noch croneine andere Methode als die Antwort mit der höchsten Bewertung. Dies funktioniert seit Ubuntu 16.04, wird aber wahrscheinlich viel früher unterstützt. Es ist nur so, dass ich angefangen habe cron, Jobs auszuführen, als der Computer seit dem 16.04 hochgefahren ist.
Wann läuft cron?
In Kommentaren fragte jemand "Wann laufen sie?". Sie können in Syslog / Journalctl sagen:
$ journalctl -b | grep cron
Jan 02 16:54:40 alien cron[919]: (CRON) INFO (pidfile fd = 3)
Jan 02 16:54:40 alien cron[919]: (CRON) INFO (Running @reboot jobs)
Jan 02 16:54:40 alien systemd[1]: Started Run anacron jobs.
Jan 02 16:54:40 alien anacron[949]: Anacron 2.3 started on 2018-01-02
Jan 02 16:54:40 alien anacron[949]: Normal exit (0 jobs run)
Jan 02 16:54:40 alien CRON[952]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[954]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[951]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[950]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[985]: (root) CMD ( /usr/local/bin/cron-reboot-cycle-grub-background)
Jan 02 16:54:40 alien CRON[954]: pam_unix(cron:session): session closed for user root
Jan 02 16:54:40 alien cron[919]: sendmail: Cannot open smtp.gmail.com:587
Jan 02 16:54:40 alien CRON[952]: pam_unix(cron:session): session closed for user root
Jan 02 16:54:40 alien cron[919]: sendmail: Cannot open smtp.gmail.com:587
Jan 02 16:54:40 alien CRON[950]: pam_unix(cron:session): session closed for user root
Zu beachten ist , dass Sie per E- cronMail den Status der ausgeführten Jobs und der ausgeführten @rebootJobs erhalten können, sodass Netzwerkmanager und E-Mail erst ausgeführt werden, wenn Sie einen sleepBefehl in Ihre Skripts eingeben.
Wo sollen die Skripte abgelegt werden?
Legen Sie Ihre Skripte in das Verzeichnis /etc/cron.d:
$ ll /etc/cron.d
total 44
drwxr-xr-x 2 root root 4096 Nov 26 19:53 ./
drwxr-xr-x 139 root root 12288 Dec 31 13:58 ../
-rw-r--r-- 1 root root 244 Dec 28 2014 anacron
-rw-r--r-- 1 root root 148 Feb 18 2017 cycle-grub-background
-rw-r--r-- 1 root root 138 Mar 5 2017 display-auto-brightness
-rw-r--r-- 1 root root 460 Nov 26 19:53 nvidia-hdmi-sound
-rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder
-rw-r--r-- 1 root root 224 Nov 19 2016 touch-vmlinuz
-rw-r--r-- 1 root root 700 Aug 5 11:15 turn-off-hyper-threading
Wie sieht ein Skript aus?
Hier sind ein paar Skripte, die ich eingerichtet habe, um jeden Start auszuführen:
Es gibt viele verschiedene Möglichkeiten, Cronjobs hinzuzufügen, aber der Kern der hoch bewerteten Antwort und Ihre Antwort ist immer noch die @reboot.
Ich bin anderer Ansicht. Der Kern der fraglichen Antwort besteht darin, crontab -edass einige aufgrund einer vim-artigen Benutzeroberfläche als eine der schwarzen Künste gelten. Auf der anderen Seite könnte diese Antwort diejenigen ansprechen, deren Gehirn auf eine bestimmte Weise verdrahtet ist. Wir sind nicht alle aus der gleichen Form gegossen. Andererseits hat diese Antwort bereits eine Ablehnung, sodass die Demokratie ihren Kurs einschlagen kann.
WinEunuuchs2Unix
2
Oh bitte. Sie und ich wissen beide, dass der Editor geändert werden kann.
Muru
@muru Ja, wahrscheinlich, weil du mich unterrichtet hast und ich gelernt habe, den Editor auf etwas wie Nano oder ein paar andere CLIs umzustellen. Aber ich bin im Gedit-Lager. Außerdem crontab -ewerden Erinnerungen an Sternchen ("*") für Minuten, Stunden usw. angezeigt, für die ich immer gefunden habe, dass ich Google-Anweisungen benötige. Ich finde immer noch Verwendung /etc/cron.dund /etc/cron.dailymeine Wahl. Zumal es spiegelt /etc/udev/rules.dund /etc/systemd/system-sleepMethoden. Es scheint einfach eine gute Passform zu sein.
WinEunuuchs2Unix
5
Sie sollten dazu upstart verwenden . Upstart wird für Ubuntu-Prozesse verwendet, die automatisch gestartet werden. Es ist eine erweiterte Lösung wie die alten System-V-init.d-Skripte. Sie können damit auch die Voraussetzungen für den Start Ihres Skripts festlegen (dh, muss das Netzwerk ausgeführt werden? Usw.).
Antworten:
Abhängig davon, welche Art von Skripten Sie ausführen müssen. Für Dienste und dergleichen sollten Sie upstart verwenden . Aber für ein Benutzerskript sollten diese von gnome als Sitzungsskripte gestartet werden! Schauen Sie unter System> Preferences> Startup Applications nach.
Nebenbei bemerkt, wenn Sie einige Skripts für die Terminalanmeldung benötigen, können Sie diese der Datei .bash_login in Ihrem Ausgangsverzeichnis hinzufügen .
Für 14.04 und älter
Ein einfacher Befehl (der nicht ausgeführt werden muss) könnte einen Upstart-Job wie den folgenden verwenden:
Speichern Sie diese in einer
.conf
Datei in/etc/init
(wenn Sie es brauchen als root ausführen , wenn das System bootet) oder~/.config/upstart
(wenn Sie es als Benutzer ausgeführt werden, wenn Sie sich anmelden).quelle
system->pref->startup applications
sind weder in/etc/init/
noch in zu finden~/.config/upstart
. So wo Start - Anwendungen definiert?Ein Ansatz ist das Hinzufügen einer @ Reboot- Cron- Task:
crontab -e
können Sie Ihren Cron bearbeiten.Eine Zeile wie diese hinzufügen:
Führt dieses Skript aus, sobald Ihr Computer hochfährt.
quelle
@reboot
Schlüsselwort ist ein guter Tipp, da es nicht allgemein bekannt ist.man 5 crontab
sagt, dass dies@reboot
beim Start ausgeführt wird (wenn der Cron-Daemon gestartet wird).rc.local
weil das System zu diesem Zeitpunkt mehr eingerichtet zu sein scheint (PATH usw.). Es ist seltsam, dass es so schwer ist, nach dem Systemstart etwas aufzurufen .Wie wäre es, wenn Sie den Befehl hinzufügen
/etc/rc.local
? Sie müssen jedoch sudo-Zugriff verwenden, um diese Datei zu bearbeiten.quelle
chmod 755 rc.local
und#!/bin/bash
in die erste Zeile einfügen müssen.Für 15.04 und später:
Um einen (kurzlebigen) Befehl 1 beim Start mit auszuführen
systemd
, können Sie eine systemd-Einheit des Typs verwendenOneShot
. Erstellen Sie beispielsweise/etc/systemd/system/foo.service
Folgendes:Dann renne:
Im Wesentlichen konvertiert dies nur einen typischen Upstart-Job in einen systemd- Job (siehe Systemd für Upstart-Benutzer ).
Sie können mehrere Befehle aus derselben Servicedatei in mehreren
ExecStart
Zeilen ausführen :Der Befehl muss immer mit dem vollständigen Pfad angegeben werden. Wenn ein Befehl fehlschlägt, wird der Rest nicht ausgeführt. A
-
vor dem Pfad weist systemd an, einen Exit-Status ungleich Null zu ignorieren (anstatt ihn als Fehler zu betrachten).Relevant:
man 5 systemd.service
Für Benutzersitzungen können Sie
~/.config/systemd
stattdessen die Systemeinheit in erstellen . Dies sollte ab 16.04 funktionieren, jedoch nicht mit früheren Versionen von Ubuntu mit systemd (da diese noch Upstart für Benutzersitzungen verwendeten). Benutzersitzungseinheiten können mit den gleichen Befehlen wie bei Systemdiensten gesteuert werden, jedoch mit der--user
hinzugefügten Option:Shell-Syntax
Beachten Sie, dass systemd im Gegensatz zu Upstart die
Exec*
Befehle nicht über eine Shell ausführt. Es führt eine begrenzte Variablenerweiterung und mehrere (durch;
) getrennte Befehle aus , aber das war es auch schon, was die Shell-ähnliche Syntax betrifft. Wenn Sie etwas Komplizierteres wünschen, z. B. Umleitung oder Pipes, schließen Sie Ihren Befehl insh -c '...'
oder einbash -c '...'
.1 Im Gegensatz zu langlebigen Dämonen.
quelle
WantedBy
hier verwendete bewirkt beispielsweise, dass es startet, wenn dasmulti-user.target
erreicht ist. Sie können verwendet werdenBefore
,After
,Requires
usw. Sieheman systemd.unit
RemainAfterExit
hängt das von dem Dienst ab, den Sie starten, und seinem gewünschten Verhalten. Zum Beispiel sollte/bin/df -h
<s> haben </ s>RemainAfterExit=no
.df
das brauchtRemainAfterExit=no
. Es sei denn, Sie möchten den Befehl bei jeder Ausführung wiederholt ausführensystemctl start foo
.Es gibt verschiedene Möglichkeiten, Befehle automatisch auszuführen:
Das Upstart- System führt alle Skripte aus, von denen es eine Konfiguration im Verzeichnis findet
/etc/init
. Diese Skripte werden während des Systemstarts (oder als Reaktion auf bestimmte Ereignisse, z. B. eine Anforderung zum Herunterfahren) ausgeführt und sind daher der Ort, an dem Befehle ausgeführt werden, die nicht mit dem Benutzer interagieren. Alle Server werden mit diesem Mechanismus gestartet.Eine lesbare Einführung finden Sie auf: http://upstart.ubuntu.com/getting-started.html den Manpages
man 5 init
undman 8 init
geben Ihnen die vollständigen Details..gnomerc
Jedes Mal, wenn Sie sich bei einer GNOME-Sitzung anmelden, wird automatisch ein Shell-Skript in Ihrem Ausgangsverzeichnis aufgerufen. Sie können dort beliebige Befehle eingeben. Umgebungsvariablen, die Sie in diesem Skript festlegen, werden von jedem Programm angezeigt, das Sie in Ihrer Sitzung ausführen.Beachten Sie, dass die Sitzung erst startet, wenn das
.gnomerc
Skript beendet ist. Wenn Sie daher ein Programm mit langer Laufzeit automatisch starten möchten, müssen Sie es&
an den Programmaufruf anhängen , um es von der laufenden Shell zu trennen.Über die Menüoption System -> Einstellungen -> Startanwendungen können Sie festlegen, welche Anwendungen beim Start Ihrer grafischen Sitzung gestartet werden sollen (Ubuntu definiert einige davon vor) und diese nach Ihrem Geschmack hinzufügen oder entfernen. Dies hat fast den gleichen Zweck und Umfang des
.gnomerc
Skripts, außer dass Sie diesh
Syntax nicht kennen müssen (aber Sie können auch keinsh
Programmierkonstrukt verwenden).quelle
.gnomerc
anscheinend vor dem Laden von Unity undStartup Applications
anscheinend nach dem Laden von Unity ausgeführt wird. Ich musste ein Programm ausführen, das sich in der Unity-Menüleiste befindet, und das hat in diesem Fall einen großen Unterschied gemacht!sudo update-rc.d myscript.sh defaults
Wenn /etc/init.d/myscript.sh Ihr Skript ist, wird es auch beim Start ausgeführt..desktop
Hier kann eine Datei abgelegt werden, die beim Start ausgeführt wird.Beispiel für eine
.desktop
Datei:Folgende
.desktop
Datei einfügen$HOME/.config/autostart
und übergebenchmod +x
:Hier
"</path/to/script>"
wird mit Pfad zu Ihrem ersetztscript.sh
( in der Regel empfohlen,
/usr/local/bin
so dass durch direkt sagen Befehl ausgeführt werden kannmyscript
ersetzt mit"</path/to/script>"
).Beispielbeispiel von
script.sh
:Ergebnis: Die
.desktop
Datei wird gestartet, von$HOME/.config/autostart
der aus das Skript ausgeführt wirdExec=
Daher können Sie Ihr gewünschtes Shell-Skript beim Start ausführen!
quelle
Für einfache Dinge können Sie unter System-> Einstellungen-> Sitzungen einen Befehl hinzufügen , der auf den Speicherort Ihres Skripts verweist.
Alternativ können Sie es zu /etc/init.d/rc.local hinzufügen oder einen Upstart- Job ausführen, wenn es sich um ein Zeug auf niedrigerer Ebene handelt .
Weitere Informationen finden Sie unter https://help.ubuntu.com/community/UbuntuBootupHowto
quelle
cron
Antwort implementiert anders als oben gewähltDiese Antwort verwendet immer noch
cron
eine andere Methode als die Antwort mit der höchsten Bewertung. Dies funktioniert seit Ubuntu 16.04, wird aber wahrscheinlich viel früher unterstützt. Es ist nur so, dass ich angefangen habecron
, Jobs auszuführen, als der Computer seit dem 16.04 hochgefahren ist.Wann läuft
cron
?In Kommentaren fragte jemand "Wann laufen sie?". Sie können in Syslog / Journalctl sagen:
Zu beachten ist , dass Sie per E-
cron
Mail den Status der ausgeführten Jobs und der ausgeführten@reboot
Jobs erhalten können, sodass Netzwerkmanager und E-Mail erst ausgeführt werden, wenn Sie einensleep
Befehl in Ihre Skripts eingeben.Wo sollen die Skripte abgelegt werden?
Legen Sie Ihre Skripte in das Verzeichnis
/etc/cron.d
:Wie sieht ein Skript aus?
Hier sind ein paar Skripte, die ich eingerichtet habe, um jeden Start auszuführen:
quelle
@reboot
.crontab -e
dass einige aufgrund einer vim-artigen Benutzeroberfläche als eine der schwarzen Künste gelten. Auf der anderen Seite könnte diese Antwort diejenigen ansprechen, deren Gehirn auf eine bestimmte Weise verdrahtet ist. Wir sind nicht alle aus der gleichen Form gegossen. Andererseits hat diese Antwort bereits eine Ablehnung, sodass die Demokratie ihren Kurs einschlagen kann.crontab -e
werden Erinnerungen an Sternchen ("*") für Minuten, Stunden usw. angezeigt, für die ich immer gefunden habe, dass ich Google-Anweisungen benötige. Ich finde immer noch Verwendung/etc/cron.d
und/etc/cron.daily
meine Wahl. Zumal es spiegelt/etc/udev/rules.d
und/etc/systemd/system-sleep
Methoden. Es scheint einfach eine gute Passform zu sein.Sie sollten dazu upstart verwenden . Upstart wird für Ubuntu-Prozesse verwendet, die automatisch gestartet werden. Es ist eine erweiterte Lösung wie die alten System-V-init.d-Skripte. Sie können damit auch die Voraussetzungen für den Start Ihres Skripts festlegen (dh, muss das Netzwerk ausgeführt werden? Usw.).
quelle