2013-12-08 07:10:46 +0000 2013-12-08 07:10:46 +0000
27
27

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

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

Antworten (3)

37
37
37
2013-12-08 07:37:04 +0000

Hängt von den Distros ab.

Wenn Sie auf von Debian abgeleiteten Distros arbeiten, gibt es mindestens zwei geeignete Stellen, /etc/rc.local und crontab. Sie können crontab als root aufrufen,

crontab -e

einfügen und dann diese Zeile

@reboot /home/my_name/bin/my_command

einfügen, wobei my_command eine ausführbare Datei ist (chmod 755 my_command).

Alternativ können Sie auch eine Zeile wie diese

/home/my_name/bin/my_command

in /etc/rc.local einfügen, und diese wird dann als letztes ausgeführt. In jedem Fall sollten Sie daran denken, dass Sie die 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,…) sind, ist die erste Option (crontab) noch gültig, während die zweite (/etc/rc.local) nicht mehr existiert. In diesem Fall sollten Sie lernen, wie man einen Dienst startet, der von systemctl ausgeführt werden soll, aber das ist vielleicht mehr, als Sie mit Ihrer einfachen Frage erwartet haben.

19
19
19
2012-09-10 22:29:09 +0000

Wenn auf Ihrem System eine Version von cron läuft, die es unterstützt (speziell Vixie cron), können Sie @reboot in einem Cron-Job verwenden.

Dies ist eine von 8 speziellen Zeichenketten, die es unterstützt.

Ich zitiere die crontab(5)-Manualseite (von meinem Ubuntu 12.04-System):

Anstelle der ersten fünf Felder kann eine von acht speziellen Zeichenketten erscheinen:

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 startup, soweit es @reboot betrifft, die Zeit ist, zu der der cron(8)-Daemon startet. Insbesondere kann er vor dem Start einiger System-Daemons oder anderer Einrichtungen liegen. Dies liegt an der Bootreihenfolge des Rechners.

Dies ist bei weitem nicht die einzige Möglichkeit, etwas zur Bootzeit zu starten, aber es ist eine Alternative.

9
9
9
2013-12-08 07:32:27 +0000

So ziemlich alle Varianten von Linux (die sehr, sehr lange zurückreichen) haben eine Datei /etc/rc.local, die beim Start ausgeführt wird - Sie können einfach den Befehl dazu hinzufügen.

Das heißt, Sie brauchen das gar nicht zu tun. Der “richtige” Weg wäre, die Zeile kernel.sysrq = 1 in /etc/sysctl.conf zu ändern/hinzufügen