什么是shell

Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的

Shell有两种执行命令的方式:

交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。
批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。
第一个脚本:

vi hello.sh  一般shell脚本都以.sh为结尾

#!/bin/bash
echo 'hello world'
// #!是一个约定的标记,告诉系统该脚本使用哪个解释器来执行
echo 命令用于向窗口输出文本

./hello.sh,即可打印hello world字符串了

下面我们写一个停止mysql的脚本:

vi mysql_stop.sh

#!/bin/bash
pid=`ps -ef|grep mysql|grep -v grep|awk '{print $2}'` // =号后的符号是左tab键上边的那个符号,不是单引号,千万不要加错``两个符号之间代表是命令,变量名和‘=’后不能有空格
//ps -ef|grep mysql用来查询mysql的进程,grep -v grep用来屏蔽grep的进程,awk用来取查询结果的第二列的值,即进程号
kill - $pid
//kill -9 用来杀进程,$pid是用来取变量值,要加$符号

如上,一个停止mysql的脚本就完成了,我们只需要运行mysql_stop.sh这个脚本就可以停止mysql了

假设mysql未启动,这个脚本再运行的时候就会报错了,那么我们需要在shell脚本里加入if判断语句

#!/bin/bash
pid=`ps -ef|grep mysql|grep -v grep|awk '{print $2}'`
if [ $pid ] //if语句开始,[]括号中是条件,[]中前后一定要有空格
then //then if语句的结构,条件满足时执行then后的内容
kill - $pid
else //else 后为条件不满足时,执行的内容
echo 'mysql started'
fi //fi 代表if语句的结束,一定要加,否则脚本运行时会报错

还有一种情况是ps查询出的进程有很多个,那我们如何杀掉进程呢,这时需要用到xargs命令

#!/bin/bash
pid=`ps -ef|grep lampp|grep -v grep|wc -l`
if [ $pid -ge ] // -ge是shell的函数之一,相当于“大于等于”,shell中只能用shell特定的运算函数,可查看详细列表,该条件的意思是查询到的lampp进程行数大于2时执行then的内容
then
ps -ef|grep lampp|grep -v grep|awk '{print $2}'|xargs kill -
//以上语句中,xargs的意义:将awk取到的所有进程号全部传给kill -9 ,杀掉全部进程
else
echo 'lampp stopped'
fi

所以,shell中常用的几种命令大家要牢记了

linux初学 :简易的shell脚本的更多相关文章

  1. 在Linux下如何用Shell脚本读写XML?现有一个config.xml(转)

    在Linux下如何用Shell脚本读写XML?现有一个config.xml <?xml version="1.0" encoding="UTF-8"?&g ...

  2. 自学Linux命令行与Shell脚本之路

    自学Linux命令行与Shell脚本之路[第一回]:初识Linux   1.1 自学Linux Shell1.1-Linux初识 1.2 自学Linux Shell1.2-Linux目录结构 1.3  ...

  3. linux的基本操作(shell 脚本的基础知识)

    shell 脚本的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本 ...

  4. Linux命令行与shell脚本编程大全.第3版(文字版) 超清文字-非扫描版 [免积分、免登录]

    此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Linux命令行与shell脚本编程大全.第3版 (大小:约22M)

  5. 《Linux命令行与shell脚本编程大全 第3版》创建实用的脚本---11

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  6. 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---47

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  7. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  8. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---57

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  9. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---56

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

随机推荐

  1. JDBC 与 ODBC 区别

    一. 二.

  2. MD5加密类方法

    package com.shkj.android.utils; import java.security.MessageDigest;import java.security.NoSuchAlgori ...

  3. android手机ping不通linux的ip地址

    我的linux是装载虚拟机里的,修改虚拟机的网络连接方式为桥接模式即可.

  4. Sublime Text3 激活教程

    Sublime Text3激活 在使用Sublime时会定期弹出购买提示框,避免出现购买提示,影响工作效率,我们可以使用网上的激活码,虽然有些不厚道,但是工作以后,一定选择购买正版支持一下. 打开Su ...

  5. nginx 配置http2

    1.需要nginx 1.9.5+版本 2.需要ssl 证书 个人免费ssl 证书:https://buy.wosign.com/free/ 3.配置如下: server { listen ssl ht ...

  6. 日志记录到txt文件

    using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Web;usi ...

  7. Android 百度地图定位(手动+自动) 安卓开发教程

    近由于项目需要,研究了下百度地图定位,他们提供的实例基本都是用监听器实现自动定位的.我想实现一种效果:当用户进入UI时,不定位,用户需要定位的时候,自己手动点击按钮,再去定位当前位置.  经过2天研究 ...

  8. 【JavaScript】关于delete

    delete 只能删除属性,不能删除变量 比如 var m = "haha"; delete m; //false m = "haha";----->wi ...

  9. [Angular2 Router] Style the Active Angular 2 Navigation Element with routerLinkActive

    You can easily show the user which route they are on using Angular 2’s routerLinkActive. Whenever a ...

  10. ThreadLocal小记

    API: public class ThreadLocal<T> extends Object 该类提供了线程局部 (thread-local) 变量. 这些变量不同于它们的普通相应物.由 ...