SHELL脚本和一些服务

shell脚本

理解
shell是操作系统的用户界面,提供了用户与内核进行交互操作的一种接口。实际上可以看作是一种命令解释器,把shell编程语言变成linux内核可以执行的内容。

  1. shell也分很多版本
    Bourne Shell:是贝尔实验室开发的
    BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的shell。
    Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。

    GNU操作系统是一个内Unix 的操作系统。我们常说的linux操作系统其实是一个有linux系统内核+其他自由软件集成起来的。其中的自由软件就包括GNU操作系统,约占源代码的28%,linux内核的源代码占3%。所以Linux操作系统这个说法是不准确的,叫 GNU/Linux操作系统还差不多

    我们常用和常见的shell版本是 BASH,是Bourne Shell改编版。

  2. shell编程语言

  3. shell脚本
    1. 一种包含系统命令和shell语言的文件。可以被shell编译执行。
    2. 脚本的名称一般是以.shell结尾的,不是也可以(只是为了高确认度)
    3. shell有很多种执行器,/bin/bash是一种(用c语言编写的执行器) /bin/sh也是一中执行器
    4. 脚本的开头:#!/bin/bash 指定执行器
    5. bash 或者 sh 脚本位置 是调用执行器参数的方法执行脚本。这个可以在脚本中不用#!/bin/bash
    6. bash或者sh或者echo,ls都是二进制执行文件,是有c或者其他语言编写的命令(一种可执行软件),可以直接在命令行执行是因为在PATH中指定了他们的位置,执行器回去指定目录下找。

crontab(定时器)服务
软件提供的就是服务。
1. 安装
linux应该都有crontab,没有的话可以安装一下:

yum install  vixie-cron

yum install crontabs

vixie-cron软件包是cron的主程序;
crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

安装完以后开启crontab服务

service crond start

2.命令

用以下的方法启动、关闭这个cron服务:
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置

查看crontab服务状态:service crond status
手动启动crontab服务:service crond start

查看调度任务
crontab -l //列出当前用户的所有调度任务 ,不用-u指定用户都指的是当前用户

crontab -l -u root //列出用户root的所有调度任务,

crontab -r//删除所有用户的定时任务,每一个用户只有一个定时文件。
crontab -e //编写当前用户的定时任务,每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。c’ron

3. 编写定时任务

  1. 编写系统定时任务,vim /ect/crontab
  2. crontab -e 编写当前用户的定时任务
  3. 系统定时任务格式
    在这里插入图片描述

前四行是有关设置cron任务运行的环境变量。
SHELL变量的值指定系统使用的SHELL环境(该样例为bash shell),
PATH变量定义了执行命令的路径。Cron的输出以电子邮件的形式发给MAILTO变量定义的用户名。
如果MAILTO变量定义为空字符串(MAILTO=""),电子邮件不会被发送。执行命令或脚本时HOME变量可用来设置基目录。

件/etc/crontab中每行任务的描述格式如下:

minute hour day month dayofweek command

minute - 从0到59的整数

hour - 从0到23的整数

day - 从1到31的整数 (必须是指定月份的有效日期)

month - 从1到12的整数 (或如Jan或Feb简写的月份)

dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)

command - 需要执行的命令(可用 ls /proc >> /tmp/proc或 执行自定义脚本的命令)

root表示以root用户身份来运行,(如果是crontab -e 编写任务时就不用指定用户名了)

run-parts表示后面跟着的是一个文件夹,要执行的是该文件夹下的所有脚本
01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本

这些/etc/crontab,/etc/cron.hourly, /etc/cron.daily,/etc/cron.weekly /etc/cron.monthly都是存在的

run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了

* * * * * 是靠空格分隔的
对于以上各语句,星号(*)表示所有可用的值。例如*在指代month时表示每月执行(需要符合其他限制条件)该命令。

整数间的连字号(-)表示整数列,例如1-4意思是整数1,2,3,4

指定数值由逗号分开。如:3,4,6,8表示这四个指定整数。

符号“/”指定步进设置。“/”表示步进值。如0-59/2定义每两分钟执行一次。步进值也可用星号表示。如*/3用来运行每三个月份运行指定任务。

4创建一个文件提交用户定时任务

在考虑向cron进程提交一个crontab文件之前,首先要做的一件事情就是设置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑crontab文件。9 9 %的UNIX和LINUX用户都使用vi,如果你也是这样,那么你就编辑$ HOME目录下的. profile文件,在其中加入这样一行:

EDITOR=vi; export EDITOR

然后保存并退出。不妨创建一个名为 cron的文件,其中是用户名,例如, rootcron。在该文件中加入如下的内容。

  # (put your own initials here)echo the date to the console every

  # 15minutes between 6pm and 6am

  0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console

保存并退出。确信前面5个域用空格分隔。

在上面的例子中,系统将每隔1 5分钟向控制台输出一次当前时间。如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些系统中,用tty1来表示控制台,可以根据实际情况对上面的例子进行相应的修改。为了提交你刚刚创建的crontab文件,可以把这个新创建的文件作为cron命令的参数:

 $ crontab rootcron

现在该文件已经提交给cron进程,它将每隔1 5分钟运行一次。

同时,新创建文件的一个副本已经被放在/var/spool/cron目录中,文件名就是用户名(即root)。

5crontab -e 提交用户定时任务
格式跟上面的系统定时任务大致一样。
* * * * * commd
*/1 * * * * /bin/sh /home/zi.sh 不需要指定用户

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值