用途、大致步骤
测试环境centos7
用途:linux开机自动执行脚本,启动java程序。 步骤: 1、在/etc/rc.d/init.d文件夹中创一个开机能够执行的脚本autoStart.sh 2、在autoStart.sh脚本中添加想要执行的代码或者调用自定义的脚本other.sh
一、创建脚本
1、autoStart.sh 放到/etc/rc.d/init.d文件夹中、权限赋值777或者755都行
case "$1" in
start)
echo $(date "+%Y-%m-%d %H:%M:%S") >> /root/autostart.log
;;
*)
;;
esac
exit 0
2、other.sh可以放在系统中的任何位置、权限777或者755
这里面就是存放的你自己需要执行的代码了,下面只做示例使用,我的是放在/opt/目录下;
. /etc/profile
CURPATH=$(cd "$(dirname "$0")"; pwd) && cd $CURPATH
二、把autoStart.sh注册到开机启动里面
1、autoStart.sh脚本放到/etc/rc.d/init.d文件夹中后执行命令;注意:先放脚本在执行命令
chkconfig --add autoStart.sh
2、执行完毕可执行下面命令查看是否添加上了
chkconfig --list
3、重启系统,查看你自己的脚本是否被执行
sudo reboot
三、相关说明
1、为什么要导入环境变量. /etc/profile
开始时候我并没有发现需要写这段代码,然后执行到other.sh脚本总是不成功,查看日志时候提示找不到java命令,正常情况下手动执行other.sh是没有任何问题的,但是自动启动时候就会提示找不到java命令,反正翻越了一些文章,大概说的是系统启动过程中执行先后顺序的问题,在执行autoStart.sh时候,环境变量还没有加载进来,所以在环境变量中配置的那些命令就可能使用不了,需要在执行代码前手动导入一下; 注意:. /etc/profile 符号点和/etc/profile 之前是有个空格的,不要忽略或者删掉; 参考文章:linux 系统脚本 环境变量 的启动顺序
2、切换到当前脚本路径CURPATH=$(cd "$(dirname "$0")"; pwd) && cd $CURPATH
因为autoStart.sh是在/etc/rc.d/init.d目录下,如果是调用other.sh,那么other.sh的路径也变相于是在/etc/rc.d/init.d目录下,所以在other.sh中使用相对路径的话,会提示找不到各种文件、文件夹;
3、chkconfig命令
参考文章:Linux chkconfig命令
4、取消注册开机自启
chkconfig --del autoStart.sh
5、推荐autoStart.sh中不要写过多的代码
autoStart.sh里面推荐只写调用其它脚本的代码,这样的话便于维护,后续如果有其它需要开机自动执行或者想取消的,只需要在里面添加、删除调用命令就可以了,不需要再来搞一遍上述操作;
四、总结
1、打开冰箱; 2、把大象塞进去;
|