参考:www.cnblogs.com/gzggyy/archive/2012/08/07/2626574.html
一、/etc/rc.local
其中的rc.local是在完成所有的系统初始化之后执行,因此我们可以把启动脚本写到里面。
这是一个最简单的方法,编辑“/etc/rc.local”,把启动程序的shell命令输入进去即可(要输入命令的全路径),类似于windows系统“开始”-->“所有程序”-->“启动”方式 。
rc.local默认root账号启动。使用其他账号启动的方法是:
su - admin -c '/bin/sh /usr/local/rsync/rsync.sh'
二、crontab(类似于windows的任务计划服务)
通过crontab可以设定程序的执行时间表,例如让程序在每天的8点,或者每个星期一的10点执行一次。
crontab -l 列出时间表;
crontab -e编辑时间表;
crontab -d删除时间表;
“-l”没什么可说的,就是一个查看而已;
“-e”是编辑,和vi没什么差别(其实就是用vi编辑一个特定文件);
“-d”基本不用,因为它把该用户所有的时间表都删除了,一般都是用“-e”编辑把不要了的时间表逐行删除;
crontab文件的格式是:M H D m d CMD。
一个6个字段,其中最后一个CMD就是所要执行的程序,如haha.sh。
M:分钟(0-59)
H:小时(0-23)
D:日期(1-31)
m:月份(1-12)
d:一个星期中的某天(0-6,0代表周日)
这5个时间字段用空格隔开,其值可以是一个数字,也可以用逗号隔开的多个数字(或其他) ,如果不需设置,则默认为“*”。
例如,每天的8点5分执行haha.sh,就是“5 8 * * * /opt/./haha.sh”;
每5分钟执行一次(*/5 * * * * ./haha.sh),如果程序不在了就重新启动一次。
重启服务生效:service crond restart
三、注册系统服务
操作系统自带的服务,如ssh,ftp等等,开机都是自动启动的,我们也可以通过这种方式让自己开发的程序提高“身价”。
比如我想把某个已经安装了的服务添加为系统服务,可以执行以下命令:
把启动脚本放到目录/etc/rc.d/init.d下
chkconfig --add 服务名称 (首先,添加为系统服务,注意add前面有两个横杠)
chkconfig -leve 启动级别 服务名 on
(说明,3级别代表在命令行模式启动,5级别代表在图形界面启动,on表示开启)
chkconfig -leve 启动级别 服务名 off
(说明,off表示关闭自启动)
例如:chkconfig -level 3 mysql on (说明:让mysql服务在命令行模式,随系统启动)
也可以使用 chkconfig --del 服务名称 来删除系统服务
******************************************************************************************
如果要查看哪些服务被添加为系统服务可以使用命令 :
chkconfig --list/chkconfig
如果要查看哪些程序被添加为自启动,可以使用命令 :
cat /etc/rc.local (查看这个文件中添加了哪些程序路径)
*******************************************************************************************
2018.04.18更新:
对于chkconfig补充一下:
系统服务的启动脚本(shell脚本)都在这里面:/etc/rc.d/init.d
怎么判断一个服务是不是系统服务?在这个目录下的就是系统服务,系统服务名字就是“脚本名字”。系统服务,就可以使用命令行services 服务名字 stop/start/restart
看一个redis的自启动服务脚本配置redisd:从脚本可以看出,脚本里就是配置一下执行文件的命令行路径,以及PID位置、应用端口等信息,和start、restart、stop操作
注意这条注释必须有,不然chkconfig没有办法对这个服务进行操作:# chkconfig: 2345 90 10
#!/bin/sh
# chkconfig: 2345 90 10 # 90代表Start的顺序,10代表Kill(Stop)的顺序 # Simple Redis init.d script conceived to work on Linux systems # as it does use of the /proc filesystem. REDISPORT=6379 EXEC=/usr/bin/redis-server CLIEXEC=/usr/bin/redis-cli PIDFILE=/var/run/redis_${REDISPORT}.pid CONF="/etc/${REDISPORT}.conf" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -p $REDISPORT shutdown while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; *) echo "Please use start or stop as first argument" ;; esac
http://www.cnblogs.com/killkill/archive/2010/11/08/1871542.html