-- liunx和windows机制不太相同,为了达到如重启后不再手动启动对应的内容的话 我们可以做到如下几方面来实现开启动免去手动启用自己的应用
-
使用crontab任务
cron 在系统中有一个运行着的守护进程,当系统时间符合某一条规划记录时, 守护进程就会启动相应的任务。可以通过crontab -e来查看任务,
sudo crontab -e -u root
可以修改root用户的crontab,换成其他用户就可以修改对应的crontab。
在这里,使用@reboot 选项来设置开机启动。比如开机执行下面的auto.sh脚本。
@reboot /root/script/auto.sh &
-
使用 /etc/rc.local
/etc/rc.local文件可以在开机时执行用户自定义的任务,查看文件内的说明信息:This script is executed at the end of each multiuser runlevel。Make sure that the script will "exit 0" on success or any other value on eror。
这个文件是系统初始化的末尾执行的一个脚本,启动任务需要加在“exit 0”之前。rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。但是太多的任务加入这个脚本中, 不但会拖慢开机速度, 还会造成管理上的混乱。如果要想随开机启动某些服务,我们再来看下一种方法。
-
/etc/init.d 来实现自动开机
/etc/init.d文件夹包含很多脚本,作用是把进程包装成了一个服务, 定义了它在启动、 重启和终止时的具体行为,用户在启用相应服务时, 就不用进行太复杂的设置。比如service mysql restart/stop/start/status来开启、停止和查看数据库mysql的状态。我们来看一下rc3.d(即命令行模式)目录:
/etc/init.d/mysql 还不能随开机启动,Linux 在开机启动时, 真正检查的是/etc/rcN.d文件夹, 执行其中的脚本, 这里的 N 代表了运行级别。需要把中的服务复制到或者建立软连接到/etc/rcN.d 上, 才能让该服务在 N 运行级别开机时启动。不过, 我们可以利用update-rc.d 命令更方便地进行。
如在默认的运行级别建立软链接:
update-rc.d mysql defaults
删除默认运行级别下的软链接:
update-rc.d cron remove
-
最后一种笨办法 那么就是建立startup.d目录 ,使开启时遍历下如下开机脚本
从/etc/profile文件得到灵感,建立脚本或者服务startup,用上面的三种方法来开机启动startup,然后读取/home/root/startup.d目录下的脚本,遍历执行目录下的脚本,这样就可以将需要开启启动的脚本放置于这个目录下,方便使用与维护。
脚本或服务内容为:
if [ -d /home/root/startup.d ]; then
for i in /home/root/startup.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
-
结语
方法有很多种 有的还使用环境变量里面的文件来做开机启动的,但环境变量会引起操作上的混乱。像有些bash运行的也会运行一次。所以这引起一定程序的混乱。结合自己实际环境,方法有很多种,合适自己的那种就是最正确的。
网友评论