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/sh

echo ‘$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执行了非常简单的命令~

例子就是这样,其他的脚本无非就是去执行了它自己命令包的命令

有时间可以分析下这个nginx的service命令方式的脚本:

时间: 2024-12-22 11:00:10

linux下service+命令和直接去执行命令的区别,怎么自己建立一个service启动的相关文章

linux 下使用指定的用户来执行命令

有时间,我们需要在开机的时候执行一些特定的程序或都脚本,因为涉及到安全主面的问题,所以又不想用root来执行,那怎样办呢. 经过查看 su 的帮助提示,发现: [[email protected] ~]# su --help Usage: su [OPTION]... [-] [USER [ARG]...] Change the effective user id and group id to that of USER.   -, -l, --login               make 

Linux下使用SSH非交互式远程执行命令脚本---ssh无密码登陆

通过SSH命令远程执行命令首先需要建立相关主机间的信任关系.否则,在执行命令前SSH命令会提示你输入远程主机的密码.建立主机间信任关系的方法如下-即ssh无密码输入: 假设我们有两台主机.主机名分别为linuxa和linuxb.首先在linuxa上以当前用户运行如下命令生成本主机的公钥和私钥文件: ssh-keygen -t rsa     上述命令执行后,隐藏目录~/.ssh下会出现两个文件:id_rsa和id_rsa.pub.其中,id_rsa.pub为公钥文件. 将该文件的内容追加到对端主

linux下网络排错以及查看网络信息命令

ping命令利用icmp协议(echorequest----echo reply包)来实现 选项 -c 次数  指定ping几次后退出 -W 时间  指定最大等待时间 注:如有大量ping请求发到本主机,会影响本机其他网络服务. ping输出详解 rtt:请求报文的响应时间 报错信息:timeout关键字:原因有2种:1,无此主机 2,对方主机不响应 目标主机不可达:这个去查rfc文档(学习网络协议的好方法就是看rfc文档),有中文版的! 判断主机是否在线的脚本: 1) for .. in ..

通过ansible批量管理Linux服务器:配置Inventory和批量执行命令

ansible是一款比较新的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括:(1).连接插件connection plugins:负责和被监控端实现通信:(2).host inventory:指定操作的主机,是一个配

RedHat Linux下MQ安装步骤及MQ常用命令

1.检查操作系统及内存情况:lsb_release -a; 2   检查java 环境:java -version 3   新建用户空间.用户和组: //创建用户目录 mkdir /home/mqm //创建用户组 groupadd mqm //创建用户 useradd -g mqm -d /home/mqm -m -s /bin/bash mqm 4 创建MQ安装文件夹: //更改目录权限 chown -R mqm:mqm /home/mqm //创建MQ安装位置和工作空间 mkdir /op

linux下访问window的共享文件,在命令行实现方法

1.挂载共享目录 mount -t cifs //192.168.0.1/aa  /tmp/export -o username=text,password=test //192.168.0.1/aa   为:windows的共享目录 /tmp/export   为:挂在点 username=test   test为windows的账户 passowrd=test   test为windows的对应帐号密码 2.取消挂载 第一种:umount //192.168.0.1/aa 第二种:umoun

linux下删除整个文件夹或者文件命令实例

1.linux删除文件夹命令 在用Linux的时候,有时候要删除一个文件夹,往往会提示次此文件非空,没法删除,这个时候,就必须使用rm -rf命令. 2.linux删除文件夹实例: rm -rf /var/log/httpd/access 将会删除/var/log/httpd/access目录以及其下所有文件.文件夹 3.linux删除文件实例: rm -f /var/log/httpd/access.log 将会强制删除/var/log/httpd/access.log这个文件 -r 就是向下

python批量操作Linux服务器脚本,key登录(执行命令、上传、下载)(二)

1 #-*- coding: utf-8 -*-   2 #批量操作linux服务器(执行命令,上传,下载)   3 #!/usr/bin/python   4 import paramiko   5 import datetime   6 import os   7 import threading   8 def ssh2(ip,username,privatekeyfile,keypwd,cmd):   9     try:  10         paramiko.util.log_to

Linux下永久修改MAC地址和ifconfig命令总结

1. 固定一个MAC地址,特别是在使用多个虚拟机的时候 linux环境下: 用root身份登录,在/etc/rc.d/rc.local里加上这三句 ifconfig eth0 down ifconfig eth0 hw ether 00:0C:18:EF:FF:ED ifconfig eth0 up 这样重新reboot后就不怕MAC复原了. 2. ifconfig命令(转载http://www.cnblogs.com/taobataoma/archive/2007/12/27/1016689.