Wie kann ich nach dem Booten einen Befehl ausführen?
27
Ich möchte den einfachen Shell-Befehl echo 1 > /proc/sys/kernel/sysrqbei jedem Start ausführen, um die sysrq-Schlüssel zu aktivieren. Wann sollte dies beim Booten durchgeführt werden und wo sollte ich ein Skript dafür ablegen?
Ich bitte um etwas anderes, @davidgo. Die Referenzen, die Sie zitieren, sind ein bisschen veraltet: Während Crontab funktioniert, funktioniert /etc/rc.local nicht auf systemdDistributionen wie Arch Linux. Wenn wir uns auf sie beziehen, könnten wir Demetri auf eine wilde Gänsejagd schicken. Manchmal müssen einige Aktualisierungen vorgenommen werden.
MariusMatutiae
Antworten:
37
Kommt auf Distributionen an.
Wenn Sie in von Debian abgeleiteten Distributionen arbeiten, gibt es mindestens zwei geeignete Stellen: /etc/rc.local und crontab. Sie können crontab als root aufrufen,
crontab -e
und dann diese Zeile einfügen
@reboot /home/my_name/bin/my_command
wo my_commandist eine ausführbare Datei ( chmod 755 my_command).
Alternativ können Sie eine Zeile wie diese platzieren
/home/my_name/bin/my_command
in /etc/rc.local, und dies wird zuletzt ausgeführt. In jedem Fall erinnern sich pls daran, dass Sie eine Root-Umgebung verwenden, nicht Ihre. Auch aus diesem Grund ist es am besten, absolute Pfade zu verwenden.
Wenn Sie auf einem sind systemd Distro (Arch Linux, Fedora 19, ...) die erste Option (crontab) noch gültig ist , während die zweite (/etc/rc.local) nicht mehr existiert. In diesem Fall sollten Sie lernen, wie Sie einen Dienst starten, der ausgeführt werden systemctlsoll. Dies kann jedoch mehr sein, als Sie mit Ihrer einfachen Frage erwartet haben.
Können Sie dies für Fedora bestätigen? Meine Suche sagt mir, dass rc.local immer noch ausgeführt wird, wenn es existiert und ausführbar ist, aber nicht standardmäßig eingerichtet ist. Ich habe beunruhigende Auswirkungen festgestellt, wenn rc.local nicht ausgeführt wird! (Ich konnte nur Referenzen für Fedora 18 finden - forums.fedoraforum.org/showthread.php?t=291889 )
Davidgo
Sie haben recht, in Fedora 19 haben Sie es vielleicht noch, wenn Sie es wirklich wollen. Aber es ist nicht mehr gepackt , docs.fedoraproject.org/en-US/Fedora/16/html/Release_Notes/… bullet 3.2.4. Außerdem gibt es es in Arch Linux überhaupt nicht, weshalb ich es für sicher hielt, eine Warnung darüber einzuschließen.
MariusMatutiae
2
Vielleicht ist dies ein unbekannter Alias für mich, aber @bootes existiert nicht, nur @rebootdebianhelp.co.uk/crontab.htm
Zarathustra
19
Wenn auf Ihrem System eine Version ausgeführt wird cron, die dies unterstützt (insbesondere Vixie cron), können Sie sie @rebootin einem Cron-Job verwenden.
Dies ist eine von 8 Sonderzeichenfolgen, die unterstützt werden.
Zitieren der crontab(5)Manpage (von meinem Ubuntu 12.04 System):
Anstelle der ersten fünf Felder kann eine von acht Sonderzeichenfolgen angezeigt werden:
string meaning
------ -------
@reboot Run once, at startup.
@yearly Run once a year, "0 0 1 1 *".
@annually (same as @yearly)
@monthly Run once a month, "0 0 1 * *".
@weekly Run once a week, "0 0 * * 0".
@daily Run once a day, "0 0 * * *".
@midnight (same as @daily)
@hourly Run once an hour, "0 * * * *".
Bitte beachten Sie, dass der Start von cron (8)@reboot der Zeitpunkt ist, an dem der Dämon gestartet wird. Dies ist insbesondere möglich, bevor einige System-Daemons oder andere Einrichtungen gestartet wurden. Dies liegt an der Startreihenfolge der Maschine.
Dies ist bei weitem nicht die einzige Möglichkeit, etwas beim Booten auszuführen, aber es ist eine Alternative.
Nahezu alle Linux-Varianten (die lange zurückreichen) haben eine Datei /etc/rc.local, die beim Start ausgeführt wird. Sie können den Befehl einfach hinzufügen.
Das heißt, Sie müssen das nicht einmal tun. Der "richtige" Weg wäre, die Zeile kernel.sysrq = 1 in /etc/sysctl.conf zu ändern / hinzuzufügen
systemd
Distributionen wie Arch Linux. Wenn wir uns auf sie beziehen, könnten wir Demetri auf eine wilde Gänsejagd schicken. Manchmal müssen einige Aktualisierungen vorgenommen werden.Antworten:
Kommt auf Distributionen an.
Wenn Sie in von Debian abgeleiteten Distributionen arbeiten, gibt es mindestens zwei geeignete Stellen: /etc/rc.local und crontab. Sie können crontab als root aufrufen,
und dann diese Zeile einfügen
wo
my_command
ist eine ausführbare Datei (chmod 755 my_command
).Alternativ können Sie eine Zeile wie diese platzieren
in /etc/rc.local, und dies wird zuletzt ausgeführt. In jedem Fall erinnern sich pls daran, dass Sie eine Root-Umgebung verwenden, nicht Ihre. Auch aus diesem Grund ist es am besten, absolute Pfade zu verwenden.
Wenn Sie auf einem sind systemd Distro (Arch Linux, Fedora 19, ...) die erste Option (crontab) noch gültig ist , während die zweite (/etc/rc.local) nicht mehr existiert. In diesem Fall sollten Sie lernen, wie Sie einen Dienst starten, der ausgeführt werden
systemctl
soll. Dies kann jedoch mehr sein, als Sie mit Ihrer einfachen Frage erwartet haben.quelle
@boot
es existiert nicht, nur@reboot
debianhelp.co.uk/crontab.htmWenn auf Ihrem System eine Version ausgeführt wird
cron
, die dies unterstützt (insbesondere Vixie cron), können Sie sie@reboot
in einem Cron-Job verwenden.Dies ist eine von 8 Sonderzeichenfolgen, die unterstützt werden.
Zitieren der
crontab(5)
Manpage (von meinem Ubuntu 12.04 System):Dies ist bei weitem nicht die einzige Möglichkeit, etwas beim Booten auszuführen, aber es ist eine Alternative.
quelle
Nahezu alle Linux-Varianten (die lange zurückreichen) haben eine Datei /etc/rc.local, die beim Start ausgeführt wird. Sie können den Befehl einfach hinzufügen.
Das heißt, Sie müssen das nicht einmal tun. Der "richtige" Weg wäre, die Zeile kernel.sysrq = 1 in /etc/sysctl.conf zu ändern / hinzuzufügen
quelle