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

Hoe kan ik een commando uitvoeren na het opstarten?

Ik zou graag bij elke boot het eenvoudige shell commando echo 1 > /proc/sys/kernel/sysrq uitvoeren, om de sysrq toetsen in te schakelen. Wanneer in boot moet dit gedaan worden, en waar moet ik een script plaatsen om dit te doen?

Antwoorden (3)

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

Hangt af van distros.

Als je op van Debian afgeleide distro’s zit, zijn er tenminste twee juiste plaatsen, /etc/rc.local en crontab. Je kunt crontab aanroepen als root,

crontab -e

en dan deze regel invoegen

@reboot /home/my_name/bin/my_command

waarbij my_command een uitvoerbaar bestand is (chmod 755 my_command).

Als alternatief kunt u een regel als deze

/home/my_name/bin/my_command

in /etc/rc.local plaatsen, en deze zal als laatste worden uitgevoerd. In ieder geval, onthoud dat je de root omgeving gebruikt, niet de jouwe. Ook om deze reden is het het beste om absolute paden te gebruiken.

Als je op een systemd distro zit (Arch Linux, Fedora 19,…) is de eerste optie (crontab) nog steeds geldig, terwijl de tweede (/etc/rc.local) niet meer bestaat. In dit geval zou je moeten leren hoe je een service start die door systemctl wordt gedraaid, maar dit kan meer zijn dan je had verwacht met je eenvoudige vraag.

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

Als je systeem een versie van cron draait die dit ondersteunt (specifiek Vixie cron), kun je @reboot in een cron job gebruiken.

Dit is een van de 8 speciale strings die het ondersteunt.

Citaat van de crontab(5) man page (van mijn Ubuntu 12.04 systeem):

In plaats van de eerste vijf velden, kan een van de acht speciale strings verschijnen:

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

Merk op dat startup, voor zover het @reboot betreft, de tijd is waarop de cron(8) daemon opstart. In het bijzonder kan het zijn voordat sommige systeemdaemons, of andere faciliteiten, zijn opgestart. Dit is te wijten aan de opstartvolgorde van de machine.

Dit is bij lange na niet de enige manier om iets tijdens het opstarten te draaien, maar het is wel een alternatief.

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

Vrijwel alle varianten van Linux (al heel, heel lang) hebben een bestand /etc/rc.local dat bij het opstarten wordt uitgevoerd - je kunt er gewoon het commando aan toevoegen.

Dat gezegd hebbende, hoef je dat niet eens te doen. De “juiste” manier zou zijn om de regel kernel.sysrq = 1 aan te passen / toe te voegen in /etc/sysctl.conf