wake-up-neo.com

Wie kann ich nach dem Booten einen Befehl ausführen?

Ich möchte den einfachen Shell-Befehl echo 1 > /proc/sys/kernel/sysrq bei jedem Start ausführen, um die sysrq-Schlüssel zu aktivieren. Wann sollte dies beim Booten erfolgen und wo sollte ich ein Skript dafür einfügen?

26
Demi

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

dabei ist my_command 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 einer systemd - Distribution (Arch Linux, Fedora 19, ...) arbeiten, ist die erste Option (crontab) weiterhin gültig, während die zweite (/etc/rc.local) nicht mehr existiert. In diesem Fall sollten Sie lernen, wie Sie einen Dienst starten, der von systemctl ausgeführt wird. Dies kann jedoch mehr sein, als Sie mit Ihrer einfachen Frage erwartet haben.

36
MariusMatutiae

Wenn auf Ihrem System eine Version von cron ausgeführt wird, die dies unterstützt (insbesondere Vixie cron), können 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):

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 * * * *".

Beachten Sie, dass der Start von cron (8)daemon, was @reboot betrifft, der Zeitpunkt ist, zu dem cron (8)daemon gestartet wurde. Dies kann insbesondere vor dem Start einiger System-Daemons oder anderer Einrichtungen liegen die Startreihenfolge der Maschine.

Dies ist bei weitem nicht die einzige Möglichkeit, etwas beim Booten auszuführen, aber es ist eine Alternative.

19
Keith Thompson

So ziemlich 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

10
davidgo