用户可以在Linux系统配置自启动的程序,可以通过多种方式来实现。
1. rc.local
系统启动阶段,系统根据启动层级运行/etc/rcN.d目录下脚本(N为0~6之间的数字,表示启动层级),之后会调用rc.local脚本。该脚本的目录在/etc或/etc/rc.d目录中。通过修改这个脚本可以添加自启动的程序
/etc/rc.local
该脚本在系统启动运行,在运行rcN.d初始化程序之后,在进入运行终端程序之前运行。如果这个文件不存在,可以新生成一个,并赋予可执行权限,系统重启后会自动启动这个脚本。
在systemd启动的Linux系统(如Ubuntu 18.04等),系统保留了rc.local的支持,在system目录下包含了rc.local.service,里面指向rc.local的执行。如果这个脚本没有自动启动,可以使能这个服务使之有效。参考https://blog.csdn.net/djstavaV/article/details/88166805
2. /etc/profile,~/.profile
用户登录阶段,系统会自动执行全局的配置脚本文件
/etc/profile
然后执行用户目录下的配置文件
~/.bash_profile
~/.bash_login
~/.profile
执行三个文件中按顺序先找到的那个。所以用户可以在/etc/profile文件中,或者在用户目录配置文件(如~/.profile)中添加需要执行的脚本,就会在登录阶段自动执行。
3. ~/.bashrc
bash启动阶段,在用户登录后,每次打开一个shell窗口或者执行一个shell脚本,bash会自动先运行~/.bashrc文件。
~/.bashrc
所以也可以通过修改这个文件,加入用户自己需要执行的程序或配置。
.bashrc和.profile的区别在于,.profile仅在登录时运行一次,.bashrc则在每次运行shell时都会运行。而在.profile文件中默认也执行了.bashrc文件。
4. crontab
这种方式用以设置定时启动的任务。Linux系统在/etc/contab等文件维护定时启动的程序的信息,由cron进程读取配置文件,并定时启动文件中定义的进程。通过编辑/etc/crontab文件可以看到里面的文件内容大致如下
里面任务定义行的格式如下
m h dom mon dow user command
分 时 日 月 天 用户 执行的命令
比如第2行任务定义行,表示每天6点25分执行run-parts命令,执行/etc/cron.daily目录下的文件。其中时间设定上可以用*,/,逗号(,)等符号来进行选择。*表示所有选择,逗号(,)表示多选,/表示每隔多少单位选择,类似Word文件打印中的页面选择。具体可以参考https://blog.csdn.net/this_capslock/article/details/46633953
cron进程从三个地方读取配置文件,即
/etc/crontab
/etc/cron.d目录下所有文件
/var/spool/cron/用户名
其中/var/spool/cron下的配置文件是属于用户独有的。crontab -e命令执行的就是这个文件的编辑。通过设置上述位置的配置文件,可以设置定时启动的程序。