liunx(一).Shell编程

目录:

  1. Shell 介绍
  2. Shell 执行
  3. Shell 变量
    1. 变量的创建
    2. 变量的使用
    3. 变量的分类
      1. 本地变量
      2. 环境变量
      3. 局部变量
      4. 位置变量(参数变量)
      5. 特殊变量
  4. Shell 传递参数
  5. Shell 数组
  6. Shell 运算符
  7. Shell echo命令
  8. Shell printf 命令
  9. Shell test命令
  10. Shell 流程控制
  11. Shell 函数
  12. Shell 输入/输出重定向
  13. Shell 文件包含
  14. 定时器crontab
  15. ps 和jps的区别

一.运行的说明

  1. 普通运行
    打开文本编辑器(可以使用vi/vim命令来创建文件),新建一个文件test.sh,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了。
    输入一些代码,第一行一般是这样:
    #!/bin/bash
    echo "Hello World !"
    说明:
    "#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。
    echo命令用于向窗口输出文本。
    1. 作为可执行程序
      将上面的代码保存为test.sh,并cd到相应目录:
      chmod +x ./test.sh  #使脚本具有执行权限
      ./test.sh  #执行脚本
      注意,一定要写成 ./test.sh,而不是test.sh,运行其它二进制的程序也一样,直接写test.sh,linux系统会去PATH里寻找有没有叫test.sh的,而只有/bin, /sbin, /usr/bin,/usr/sbin等在PATH里,你的当前目录通常不在PATH里,所以写成test.sh是会找不到命令的,要用./test.sh告诉系统说,就在当前目录找。
    2. 作为解释器参数
      这种运行方式是,直接运行解释器,其参数就是shell脚本的文件名,如:
      /bin/sh test.sh
      /bin/php test.php
      这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。
  2. 后台运行
    语法:执行命令的后面加上&    
    例如:./test.sh &
    说明:但是该命令只能在当前shell窗口(进程)中有效。关闭了窗口,该程序就结束执行。
  3. 让关闭窗口之后,该程序该可以继续运行
    语法:nohup  ./test.sh
    说明:采用在多个进程之间可以同时运行的方式,会把相应的输出语句,放在执行目录下创建一个nohup.out文件
  4. 两者之间的结合
    语法:nohup 命令 &
    说明:在后台运行,且就算窗口关闭,该程序还在执行

十二.Shell 标准输入/输出/错误

作用:有时候我们需要将某个shell 中输出内容进行记录(保存)。

不需要标准输出的时候:在启动某个程序时,有可能会报一些不兼容、启动失败的输出,这些输出在启动的时候,事先在已经使用的时候,就不需要记录,所以直接将错误信息丢弃。
 

十四.定时器 crontab

linux下的定时任务

 

  1. 编辑使用crontab -e
    一共6列,分别是:分、时、日、月、周、命令
  2. 查看使用crontab -l
  3. 删除任务crontab -r
  4. 查看crontab执行日志
    tail -f /var/log/cron
    必须打开rsyslog服务cron文件中才会有执行日志(service rsyslog status)
    tail -f /var/spool/mail/root(查看crontab最近的执行情况)
  5. 查看cron服务状态
    service crond status
  6. 启动cron服务
    service crond start

基本格式:

*    *   *   *   *   command
分  时  日  月  周
第1列(f1)表示分钟1~59 每分钟用*或者 */1表示 
第2列(f2)表示小时0~23(0表示0点) 
第3列(f3)表示日期1~31 
第4列(f4)表示月份1~12 
第5列(f5)标识号星期0~6(0表示星期天) 
第6列(f6)要运行的命令 

说明:

当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其余类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推
当 f1 为 /n 时表示每 n 分钟个时间间隔执行一次,f2 为 /n 表示每 n 小时个时间间隔执行一次,其余类推
当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其余类推
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。 

crontab的一些基本例子:

* * * * * /usr/local/hadoop/sbin/restart-all.sh 
每分钟都执行一次这个脚本

30 21 * * * /usr/local/hadoop/sbin/restart-all.sh
每天的21:30都执行这个脚本

30 21 1,10,20 * * /usr/local/hadoop/sbin/restart-all.sh
每个月的1,10,20的21:30都执行这个脚本

0 6-12/3 * 12 * /usr/bin/backup
在12月内,每天的早上6点到12点中,每隔3个小时执行一次。

0 17 * * 1-5 mail -s "hi" watermelonkiwi@163.com < /tmp/maildata
每周的17:00发一份信,内容是 hi 给watermelonkiwi@163.com

0 6 * * * nohut /export/services/storm/nimbus restart > /dev/null 2 > &1
每天的早上6点启动strom的nuibus 并且将执行之后的信息发送给无底洞,不显示



十五.ps 和 jps

  • ps:ps用来显示进程的相关信息
    比如:ps -ef|grep java
  • jps :类似liunx的ps 命令,不同的ps是用来显示所有进程,而jps只显示Java进程,准确的说上显示当前用户已启动的部分Java今晨信息,信息包括进程号和简短的进程command。
    jsp命令是Java的进程命令,所以需要再liunx中安装jdk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值