How can I run a command after boot?
Hire the world's top talent on demand or became one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Riding Sky Waves v001
--
Chapters
00:00 How Can I Run A Command After Boot?
00:19 Answer 1 Score 20
01:14 Answer 2 Score 10
01:42 Accepted Answer Score 44
02:43 Thank you
--
Full question
https://superuser.com/questions/685471/h...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#linux #boot #script #init #systemd
#avk47
ACCEPTED ANSWER
Score 44
Depends on distros.
If you are on Debian-derived distros, there are at least two proper places, /etc/rc.local and crontab. You may invoke crontab as root,
crontab -e
and then insert this line
@reboot /home/my_name/bin/my_command
where my_command
is an executable file (chmod 755 my_command
).
Alternatively, you may place a line like this
/home/my_name/bin/my_command
in /etc/rc.local, and this will be executed last. In any case, pls do remember you are using root environment, not yours. Also for this reason, it is best to use absolute paths.
If you are on a systemd distro (Arch Linux, Fedora 19,...) the first option (crontab) is still valid, while the second one (/etc/rc.local) does not exist any longer. In this case, you should learn how to start a service to be run by systemctl
, but this may be more than you bargained for with your simple question.
ANSWER 2
Score 20
If your system is running a version of cron
that supports it (specifically Vixie cron), you can use @reboot
in a cron job.
This is one of 8 special strings that it supports.
Quoting the crontab(5)
man page (from my Ubuntu 12.04 system):
Instead of the first five fields, one of eight special strings may appear:
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 * * * *".
Please note that startup, as far as
@reboot
is concerned, is the time when the cron(8) daemon startup. In particular, it may be before some system daemons, or other facilities, were startup. This is due to the boot order sequence of the machine.
This is far from being the only way to run something at boot time, but it's an alternative.
ANSWER 3
Score 10
Pretty much all variants of Linux (going back a long, long time) have a file /etc/rc.local which runs on startup - you can just add the command to it.
That said, you don't even need to do that. The "correct" way would be to modify / add the line kernel.sysrq = 1 into /etc/sysctl.conf