linux开机自动执行脚本、运行程序

用途、大致步骤

1、在/etc/rc.d/init.d文件夹中创一个开机能够执行的脚本autoStart.sh
2、在autoStart.sh脚本中添加想要执行的代码或者调用自定义的脚本other.sh

一、创建脚本

1、autoStart.sh 放到/etc/rc.d/init.d文件夹中、权限赋值755都行

#! /bin/sh
# chkconfig: 3456 99 10
# 手动加载环境变量信息
source /etc/profile

# 这段做测试使用,开机启动后会在/root目录创建一个autostart.log文件,则证明生效了
echo $(date "+%Y-%m-%d %H:%M:%S") >> /root/autostart.log
# 下面编写你需要执行的命令或者脚本
#sudo bash /opt/other.sh #以后有其它想开机自启的在这里加执行命令就可以了
exit 0

2、other.sh可以放在系统中的任何位置、权限755
这里面就是存放的你自己需要执行的代码了,下面只做示例使用,我的是放在/opt/目录下;

#! /bin/bash

# 重要:切换到当前脚本的路径下
CURPATH=$(cd "$(dirname "$0")"; pwd) && cd  $CURPATH

# 下面就是你自己需要执行的具体命令了:我的是启动java程序
# nohup java -jar  /opt/self-server.jar

二、把autoStart.sh注册到开机启动里面

1、autoStart.sh脚本放到/etc/rc.d/init.d文件夹

#注册开机启动
chkconfig --add autoStart.sh

#校验
chkconfig --list


#重启查看是否生生效
reboot

tail /root/autostart.log

三、说明

1、为什么要导入环境变量source /etc/profile
开始时候我并没有发现需要写这段代码,然后执行到other.sh脚本总是不成功,查看日志时候提示找不到java命令,正常情况下手动执行other.sh是没有任何问题的,但是自动启动时候就会提示找不到java命令,反正翻越了一些文章,大概说的是系统启动过程中执行先后顺序的问题,在执行autoStart.sh时候,环境变量还没有加载进来,所以在环境变量中配置的那些命令就可能使用不了,需要在执行代码前手动导入一下;
参考文章:linux 系统脚本 环境变量 的启动顺序

2、切换到当前脚本路径CURPATH= ( c d " (cd " (cd"(dirname “$0”)"; pwd) && cd $CURPATH
因为autoStart.sh是在/etc/rc.d/init.d目录下,如果是调用other.sh,那么other.sh的路径也变相于是在/etc/rc.d/init.d目录下,所以在other.sh中使用相对路径的话,会提示找不到各种文件、文件夹;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值