linux下service+命令和直接去执行命令的区别,怎么自己建立一个service启动
启动一些程序服务的时候,有时候直接去程序的bin目录下去执行命令,有时候利用service启动。
比如启动mysql服务时,大部分喜欢执行service mysqld start。当然也可以去mysql下执行bin命令带上几个参数什么的。
那么service是啥呢?linux可以man一下,看出来就是去/etc/init.d下执行了可执行的shell脚本。
service执行的服务脚本都是在/etc/init.d目录下,各个程序下脚本里执行的命令仍然是在各个bin下。
这样我们也可以在这个目录下写一个shell,模仿这些程序来个。
先写一个简单到爆炸的service启动脚本。
# cd /etc/init.d
# vi haha #这个脚本名字叫haha
#!/bin/shecho '$0='$0 '$1='$1 start(){echo 'ls'cd ~ && ls }stop(){echo 'll'cd ~ && ls -l }case "$1" in "start")start ;;"stop")stop ;;esac
给这个脚本的执行权限比如 # chmod +x haha
执行这个:
# service haha start
# service haha stop
可以看到脚本里输出了一下$0,$1
$0=/etc/init.d/haha
$1=start 或者 stop,就是haha脚本的参数
然后start和stop执行了非常简单的命令~
例子就是这样,其他的脚本无非就是去执行了它自己命令包的命令
有时间可以分析下php-fpm的service命令方式的脚本:
#! /bin/sh # # chkconfig: - 84 16 # description: PHP FastCGI Process Manager # processname: php-fpm # config: /etc/php-fpm.conf # config: /etc/sysconfig/php-fpm # pidfile: /var/run/php-fpm/php-fpm.pid # ### BEGIN INIT INFO # Provides: php-fpm # Required-Start: $local_fs $remote_fs $network $named # Required-Stop: $local_fs $remote_fs $network # Short-Description: start and stop PHP FPM # Description: PHP FastCGI Process Manager ### END INIT INFO# Standard LSB functions #. /lib/lsb/init-functions# Source function library. . /etc/init.d/functions #圆点.表示引入这个文件。 加载函数库文件,比如下面的daemon,killproc,status都是这个文件里的# Check that networking is up. . /etc/sysconfig/network #加载网卡情况文件, 比如下面的"$NETWORKING" = "no"# Additional environment file if [ -f /etc/sysconfig/php-fpm ]; then #加载这个文件,是否有额外的配置信息. /etc/sysconfig/php-fpm fiif [ "$NETWORKING" = "no" ] thenexit 0 fiRETVAL=0 #返回值 初始化 prog="php-fpm" #程序名称 pidfile=${PIDFILE-/var/run/php-fpm/php-fpm.pid} # $(a-b)这种表达方式表示,如果a存在,那么就返回$a,否则就返回$b。PIDFILE就表示可能是上面加载文件/etc/sysconfig/php-fpm里的变量。 -- pidfile,存放一个进程号pid lockfile=${LOCKFILE-/var/lock/subsys/php-fpm} start () {echo -n $"Starting $prog: " # echo -n -n表示不换行dir=$(dirname ${pidfile})[ -d $dir ] || mkdir $dir # 不存在pid文件的目录则创建daemon --pidfile ${pidfile} /usr/sbin/php-fpm --daemonize #执行php-fpm命令,这个最重要的RETVAL=$? #获取上一条命令的执行返回值echo #表示换行[ $RETVAL -eq 0 ] && touch ${lockfile} # 如果启动成功,生成一个lockfile文件 } stop () {echo -n $"Stopping $prog: "killproc -p ${pidfile} php-fpm # 停掉程序 killproc的函数就在文件头处引入的/etc/init.d/functions文件RETVAL=$?echoif [ $RETVAL -eq 0 ] ; thenrm -f ${lockfile} ${pidfile}fi }restart () {stopstart }reload () {echo -n $"Reloading $prog: "if ! /usr/sbin/php-fpm --test ; thenRETVAL=6echo $"not reloading due to configuration syntax error"failure $"not reloading $prog due to configuration syntax error"elsekillproc -p ${pidfile} php-fpm -USR2 # 这里关键的是信号USR2,这个信号告诉是平滑重载所有worker进程并重新载入配置和二进制模块;这就是reload和restart的区别RETVAL=$?fiecho }# See how we were called. case "$1" instart)start;;stop)stop;;status)status -p ${pidfile} php-fpmRETVAL=$?;;restart)restart;;reload|force-reload)reload;;configtest)/usr/sbin/php-fpm --testRETVAL=$?;;condrestart|try-restart)[ -f ${lockfile} ] && restart || :;;*)echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart|try-restart|configtest}"RETVAL=2;; esacexit $RETVAL
mysql的相关启动服务编写:https://blog.51cto.com/oldboy/2124950
转载于:https://www.cnblogs.com/applelife/p/10496210.html
linux下service+命令和直接去执行命令的区别,怎么自己建立一个service启动相关推荐
- linux执行指定程序的命令,linux 下使用指定的用户来执行命令
有时间,我们需要在开机的时候执行一些特定的程序或都脚本,因为涉及到安全主面的问题,所以又不想用root来执行,那怎样办呢. 经过查看 su 的帮助提示,发现: [root@redhat6 ~]# su ...
- Linux下临时以非root身份执行命令
有时会遇到linux下的某些命令不能以root身份运行,比如vlc命令是不能以root身份运行的.这时,如果不想切换到非root身份并且执行完了以后再切换回来,可以在root下这样做: su yasi ...
- linux 骇客帝国脚本,Linux下,那些让人惊叹的命令执行效果
Linux下,那些让人惊叹的命令执行效果 之前介绍过linux常用命令一文,接下来我们来一起学习一下linux里好玩的命令作者:luckyw2016-12-08 18:23 之前介绍过linux常用命 ...
- Linux下ps查找进程用kill终止命令
Linux下ps查找进程用kill终止命令<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:offic ...
- Redis第二集:Linux下安装Redis和测试,包含命令代码和问题处理办法,超详细版
Redis第二集:Linux下安装Redis和测试,包含命令代码和问题处理办法,超详细版 一.资源 Linux下的Redis的下载地址 二.安装与测试 上传至自己的Linux平台 解压安装包 tar ...
- 查看linux的用户 7.2,linux下查看用户登入系统相关命令及编写脚本(七)
linux下查看用户登入系统相关命令及编写脚本(七) 查看用户登入系统日志 1.w 显示谁登入并正在做什么事 2.who 显示谁登入 -r:显示系统运行级别 3.sleep 睡眠命令(sleep 5 ...
- Linux下必须知道的11个网络命令
Linux下必须知道的11个网络命令 作者:佚名 字体:[增加 减小] 来源:互联网 时间:03-06 15:54:29 我要评论 无论你是要下载文件.诊断网络问题.管理网络接口,还是查看网络的统计数 ...
- linux 让暂停的进程恢复,Linux 下进程的挂起和恢复命令
本文给大家介绍进程的挂起及恢复命令,具体内容如下所示: #ctrl+z:挂起,程序放到后台,程序没有结束. #jobs:查看被挂起的程序工作号 恢复进程执行时,有两种选择:fg命令将挂起的作业放回到前 ...
- Linux下 “>/dev/null 2>1 “ 命令学习
Linux下 ">/dev/null 2>&1 " 命令学习 参考链接: 1.https://blog.csdn.net/sunrier/article/det ...
最新文章
- python能解密java的,在python中解码Java对象
- SPOJ problem 42: Adding Reversed Numbers
- iBatis in 语句参数传入方法
- java取整和四舍五入方法
- 常用linux解压命令(原创)
- SQL Plus的使用详解(登录和常用命令)
- SolarWinds盛邀技术专业人士参加第八届年度THWACKcamp虚拟IT活动
- windows防火墙出站规则只允许访问指定域名ip,其他出站ip全部阻止的方法
- jieba.lcut()
- linux下传输文件命令
- 深度学习epochs、batch、batch_size和iteration的区分
- NOY 139 康托展开
- 用户头像上传(自用)
- OpenModelica仿真RLC电路
- Dubbo线程池问题思考Thread pool is EXHAUSTED!
- BPR的几种经典方法(转)
- 物化视图、普通视图及其区别
- ViewFlipper动态加载View
- java memorystream 包_C#字符串string 、byte[]、MemoryStream、Base64String的相互转换
- rapidminer员工离职分析_RapidMiner 9从根本上简化了分析团队的数据准备工作