linux下创建自启动程序有两种方式:
一,自启动程序方法1:
etc/rc.local在里面加入/home/robin/code/autoruntest > /dev/null &(其中autoruntest 测试程序名称,下同)。即可自启动
二,启动程序方法2:(着重介绍此方法)
创建linux服务,步骤如下:
1) 写服务启动脚本文件(后附例子)
2) 修改脚本文件chmod 777 autoruntest
3) 脚本文件拷贝到/etc/rc.d/init.d/
4) chkconfig --add autoruntest 添加服务
5) 重新启动(完成)
其中到了第三步后就可以使用service启动停止了,要自启动必须使用chkconfig 将服务添加到系统中。1,使service可以启动/停止:
第一步,编写服务启动脚本yaoservice:
start()
{
echo "start aoe-yaoed"
/usr/sbin/yaoed & #可执行文件路径
exit 0;
}
stop()
{
echo -n "stop aoe-yaoed"
if pkill yaoed
then
echo " [ok]"
else
echo " [failed]"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "usage: $0 start|stop|restart"
exit 0;
esac
第二步,把文件yaoservice拷贝到/etc/init.d/目录下面
第三步,修改yaoservice权限:chmod 755 -R /etc/init.d/yaoservicemod
第四步,执行service testService start,报“env: /etc/init.d/oracle: No such file or directo”
郁闷了半天,为什么呢?以为脚本有问题,百度后得知:其实是文件格式不对,在window下编辑的文件通常是DOS格式字符,要转换成UNIX格式字符
用UltraEdit更改:文件--》另存为--》换行符,选:UNIX 终束符 - LF
然后再次上传到init.d目录下,并修改权限,哈哈OK了!!(出现问题,将问题百度下还是不错的,当然google也行喽,就是有时会和谐下)
注:kill杀进程命令,还有killall、pkill、xkill
kill的应用是和ps 或pgrep 命令结合在一起使用的:
[root@localhost ~]# ps -e | grep yaoed
1745 pts/1 00:00:00 yaoed
[root@localhost ~]# kill 1745 killall 通过程序的名字,直接杀死所有进程,咱们简单说一下就行了
用法:killall 正在运行的程序名
[root@localhost ~]# pkill yaoedpkill 和killall 应用方法差不多,也是直接杀死运行中的程序
xkill 是在桌面用的杀死图形界面的程序
2,使服务可以开机自动启动
第五步,chkconfig --add yaoservice,报:“service nginx does not support chkconfig“错误
需要要在脚本里加上如下代码:
# chkconfig: 2345 08 92
# description: Automates a packet filtering firewall withipchains. 注释也是要加上的,不知道为什么,本人对脚本不熟悉,加到start()上面就行了。
然后在执行一遍就ok了!
第六步,现在重启完机器后仍然不能自动启动,还差最后一步:
[root@localhost ~]# chkconfig --level 3 yaoservice on #修改level 3 级别
完成!!重启后程序自动启动了
chkconfig命令是设置开机服务自动启动/关闭自动启动命令:
[root@localhost ~]# chkconfig --list 显示开机可以自动启动的服务
[root@localhost ~]# chkconfig --add *** 添加开机自动启动***服务
[root@localhost ~]# chkconfig --del *** 删除开机自动启动***服务
[root@localhost ~]# chkconfig --level *** 设置level 级别 状态
/etc这个文件夹里还有诸如名为rc1.d, rc2.d一直到rc6.d的文件夹,这些都是linux不同的runlevel,都是链接文件,每个链接的名字都是以S或者K开头的,S开头的表示是系统启动是要随机启动的,K开头的是不随机启动的。这 样,你就可以知道,如果我要哪个服务随机启动,就把它名字第一个字母K改成S就可以了,当然,把S改成K后,这个服务就不能随机启动了。因此,我这个链接 还要起名为SXXX,这样系统才能让它随机启动。而,chkconfig --level *** 命令正是修改这些链接名开头字母的命令。
至于为什么要修改level3 ,而修改level 5 不行,还不是很清楚!当然数字越小级别越高,可以肯定的是只修改level5级别是不够的!