《Linux就该这么学》 第4章 vim编辑器与shell 命令脚本

第4章 vim编辑器与shell 命令脚本
Linux中的一切都是文件
部署一个服务,就是在修改服务的配置文件

Vim编辑器 是Vi编辑器的提升版本

命令模式:a、i、o 进入输入模式
末行模式:Esc键键入命令模式
vim vi
vim编辑器是vi编辑器的提升版本
vim 带有着色的功能

命令模式:复制、剪切、粘贴、搜索等等
输入模式:随意对文件进行内容编辑
末行模式:保存、退出、设置编辑环境

进入编辑文件后,默认是在命令模式
Vim中常用的命令
dd 删除(剪切)光标所在整行
5dd 删除(剪切)从光标处开始的5行
yy 复制光标所在整行
5yy 复制从光标处开始的5行
u 撤销上一步的操作
p 把之前删除(dd)或复制(yy)过的数据粘贴到光标后面
n 显示搜索命令定位到的下一个字符串
N 显示搜索命令定位到的上一个字符串

末行模式中可用的命令
:w 保存
:q 退出
:q! 强制退出(放弃对文档的 修改内容)
:wq! 强制保存退出
:set nu 显示行号
:set nonu 不显示行号
:命令 执行该命令
:整数 跳转到该行
:s/one/two 将当前光标所在行的第一个one 替换成two
:s/one/two/g 将当前光标所在行的所有one 替换成two
:%s/one/two/g 将当前光标所在行的所有one 替换成two
?字符串
/字符串

4.1.2 配置主机名称
[root@localhost 桌面]# vim /etc/hostname
localhost.localdomain
#linuxprobe.com
[root@localhost 桌面]# cat /etc/hostname
localhost.localdomain
#linuxprobe.com

4.1.3 配置网卡信息
cd /etc/sysconfig/network-scripts/

4.1.4配置Yum软件仓库
1、cd /etc/yum.repos.d/ 进入Yum软件仓库的配置文件
2、vim rhel17.repo 创建新的配置文件(rhel17.repo)
3、按配置参数的路径挂载光盘,并把光盘挂载信息写入到/etc/fstab文件中
4、使用"Yum ×××tall httpd -y”命令检查Yum软件仓库是否已经可用。

[root@localhost 桌面]# vim /etc/yum.repos.d/yumwenjian.repo
进入Yum软件仓库的配置文件
[rhel]
name=rhel7
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

创建挂载点进行挂载操作,并设置成开机自动挂载
尝试使用Yum软件仓库来安装web服务。

4.2 编写脚本
1:脚本声明 哪个程序可以懂 bash #!/bin/bash

2:脚本注释 #sdkasodka 不执行 可以有可以没有 某一程序或某一段代码suan的解释

3:脚本命令 Linux系统命令即是脚本命令

执行脚本
1、bash 脚本名称.sh
2、./脚本名称.sh

4.2.1 编写脚本
[root@linuxprobe ~]# vim xiaofeng1.sh
[root@linuxprobe ~]# cat xiaofeng1.sh
#!/bin/bash
#lianxi jiaoben shiyong
pwd
ls
ll
top
[root@linuxprobe ~]# bash xiaofeng1.sh
/root
anaconda-ks.cfg xiaofeng1.sh 公共 图片 音乐
initial-setup-ks.cfg xiaolu.txt 模板 文档 桌面
practise xiaoxiao 视频 下载
xiaofeng1.sh:行5: ll: 未找到命令

top - 16:11:54 up 4:14, 2 users, load average: 0.61, 0.24, 0.1
Tasks: 494 total, 1 running, 493 sleeping, 0 stopped, 0 zom
%Cpu(s): 19.4 us, 1.8 sy, 0.0 ni, 78.7 id, 0.0 wa, 0.1 hi, 0
KiB Mem: 2035648 total, 1043932 used, 991716 free, 920
KiB Swap: 2097148 total, 0 used, 2097148 free. 328880

PID USER PR NI VIRT RES SHR S %CPU %MEM
2468 root 20 0 1816144 294852 42416 S 80.1 14.5
1186 root 20 0 219796 33704 7500 S 8.9 1.7
5392 root 20 0 789836 24172 14224 S 4.3 1.2
762 root 20 0 0 0 0 S 1.0 0.0
137 root 20 0 0 0 0 S 0.3 0.0
1032 root 20 0 267352 4320 3480 S 0.3 0.2
2603 root 20 0 346920 17252 13692 S 0.3 0.8
3372 root 20 0 0 0 0 S 0.3 0.0
5938 root 20 0 123924 1932 1156 R 0.3 0.1
1 root 20 0 52924 6800 3768 S 0.0 0.3
2 root 20 0 0 0 0 S 0.0 0.0
3 root 20 0 0 0 0 S 0.0 0.0
5 root 0 -20 0 0 0 S 0.0 0.0

[root@localhost ~]# vim xiaofeng1.sh
[root@localhost ~]# bash xiaofeng1.sh
uname -a :
Linux localhost.localdomain
#linuxprobe.com 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
pwd :
/root
ls :
bianji etc ip.txt xiaolu.txt 视频 下载
CheckHosts.sh etc.tar.gz practise 公共 图片 音乐
checkkeys.sh guess.sh xiaofeng1.sh 模板 文档 桌面
uptime :
01:20:37 up 18 min, 2 users, load average: 0.37, 0.43, 0.32
[root@localhost ~]# cp xiaofeng1.sh jiaobenlianxi.sh
[root@localhost ~]# ls
bianji etc.tar.gz practise 模板 下载
CheckHosts.sh guess.sh xiaofeng1.sh 视频 音乐
checkkeys.sh ip.txt xiaolu.txt 图片 桌面
etc jiaobenlianxi.sh 公共 文档
[root@localhost ~]# rm -f xiaofeng1.sh
[root@localhost ~]# ls
bianji etc ip.txt xiaolu.txt 视频 下载
CheckHosts.sh etc.tar.gz jiaobenlianxi.sh 公共 图片 音乐
checkkeys.sh guess.sh practise 模板 文档 桌面
[root@localhost ~]# cat jiaobenlianxi.sh
#!/bin/bash
#lianxi jiaoben shiyong
echo "uname -a :"
uname -a
echo "pwd :"
pwd
echo "ls :"
ls
echo "uptime :"
uptime

4.2.2接收用户的参数
变量
$0指脚本名称本身
$#总共接收到多少参数
$*分别接收到参数有哪些
$1,$3,$5,第1个参数,第3个参数,第5个参数的值是什么

[root@localhost ~]# vim jiaobencanshu.sh
[root@localhost ~]# cat jiaobencanshu.sh
#!/bin/bash

jiaoben canshu lianxi

echo "$0"
echo "$#,$*"
echo "$1,$3,$5"
[root@localhost ~]# bash jiaobencanshu.sh a b c d e f g h
jiaobencanshu.sh
8,a b c d e f g h
a,c,e

1:接收用户输入的参数
2:根据用户输入的参数做出判断

4.2.3判断用户的参数
条件测试语句:
文件测试语句:
逻辑测试语句:
整数值比较语句:
字符串比较语句:

文件测试参数:
-d 测试文件是否为目录类型
-e 测试文件是否存在
-f 判断是否为一般文件
-r 测试当前用户是否有权限读取
-w 测试当前用户是否有权限写入
-x 测试当前用户是否有权限执行

判断/home是否为一个目录类型的文件
[root@localhost ~]# [ -d /home ]
[root@localhost ~]# echo $? #判断上一条语句是否执行成功,若成功,返回0
0

判断/etc/fstab是否为一般文件,如果返回值为0,则代表文件存在,且为一般文件:
[root@localhost ~]# [ -f /home ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -f /etc/fstab ]
[root@localhost ~]# echo $?
0

逻辑语句
测试语句 && 命令 逻辑的与
测试语句 || 命令 逻辑的或
测试语句 ! 命令 逻辑的非

逻辑的与 &&:当成功的时候,则执行后面语句
[root@localhost ~]# [ -f /etc/fstab ] && echo $?
0
逻辑的或 ||:当成功的时候,则执行后面语句
[root@localhost ~]# [ -d /etc/fstab ] || echo $?
1
[root@localhost ~]# [ $USER=root ] && echo "admin" || echo "user"
admin
[root@localhost ~]# su linuxprobe
[linuxprobe@localhost root]$ [ $USER=root ] && echo "admin" || echo "user"
admin

逻辑的非 !:当成功-->取反值,失败;当失败-->取反值,成功;
[root@localhost ~]# [ ! $USER = root ] && echo "user"
[root@localhost ~]# su linuxprobe
[linuxprobe@localhost root]$ [ ! $USER = root ] && echo "user"
user

管理员叫做root用户

逻辑语句用于对测试结果进行逻辑分析,根据测试结果可实现不同的效果。例如在Shell终端中逻辑“与”的运算符号是&&,它表示当前面的命令执行成功后才会执行它后面的命令,因此可以用来判断/dev/cdrom文件是否存在,若存在则输出Exist字样。
[root@linuxprobe ~]# [ -e /dev/cdrom ] && echo "Exist"
Exist

逻辑“或”,它在Linux系统中的运算符号为||,表示当前面的命令执行失败后才会执行它后面的命令,因此可以用来结合系统环境变量USER来判断当前登录的用户是否为非管理员身份:
[root@linuxprobe ~]# echo $USER
root
[root@linuxprobe ~]# [ $USER = root ] || echo "user"
[root@linuxprobe ~]# su - linuxprobe
[linuxprobe@linuxprobe ~]$ [ $USER = root ] || echo "user"
user

当前我们正在登录的即为管理员用户—root。下面这个示例的执行顺序是,,先判断当前登录用户的USER变量名称是否等于root,然后用逻辑运算符“非”进行取反操作,效果就变成了判断当前登录的用户是否为非管理员用户了。最后若条件成立则会根据逻辑“与”运算符输出user字样;或条件不满足则会通过逻辑“或”运算符输出root字样,而如果前面的&&不成立才会执行后面的||符号。

整数比较运算符
-eq 是否等于
-ne 是否不等于
-gt 是否大于
-lt 是否小于
-le 是否 等于或小于
-ge 是否大于或等于

[root@localhost ~]# [ 10 > 5 ] && echo $?
0
[root@localhost ~]# [ 10 > 15 ] && echo $?
0

[root@localhost ~]# [ 10 -gt 8 ] && echo "right" || echo "wrong"
right
[root@localhost ~]# [ 10 -gt 15 ] && echo "right" || echo "wrong"
wrong
[root@localhost ~]# [ 10 -lt 8 ] && echo "right" || echo "wrong"
wrong
[root@localhost ~]# [ 10 -lt 16 ] && echo "right" || echo "wrong"

做内存报警的小程序:

[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 1987 893 1094 9 0 315
-/+ buffers/cache: 577 1410
Swap: 2047 0 2047
[root@localhost ~]# free -m | grep Mem:
Mem: 1987 893 1094 9 0 315
[root@localhost ~]# free -m | grep Mem: | awk '{ print $4 }'
1094
[root@localhost ~]# OREZ=free -m | grep Mem: | awk '{ print $4 }'
[root@localhost ~]# echo $OREZ
1090
[root@localhost ~]# [ $OREZ -lt 1024 ] && echo "neicunchognzu" || echo "neicunbuzu"
[root@localhost ~]# [ $OREZ -lt 1024 ] && echo "baojing" | mail -s "subjiect " linuxprobe

查看内存不能使用量
awk 是正则表达式

free命令,它可以用来获取当前系统正在使用及可用的内存量信息。接下来先使用free -m命令查看内存使用量情况(单位为MB),然后通过grep Mem:命令过滤出剩余内存量的行,再用awk '{print $4}'命令只保留第四列,最后用FreeMem=语句的方式把语句内执行的结果赋值给变量。
这个演示确实有些难度,但看懂后会觉得很有意思,没准在运维工作中也会用得上。

[root@linuxprobe ~]# free -m
total used free shared buffers cached
Mem: 1826 1244 582 9 1 413
-/+ buffers/cache: 830 996
Swap: 2047 0 2047
[root@linuxprobe ~]# free -m | grep Mem:
Mem: 1826 1244 582 9
[root@linuxprobe ~]# free -m | grep Mem: | awk '{print $4}'
582
[root@linuxprobe ~]# FreeMem=free -m | grep Mem: | awk '{print $4}'
[root@linuxprobe ~]# echo $FreeMem
582

[ free -m | grep Mem: awk '{print $4}' -lt 1024 ] && echo
"Insufficient Memory"

我们使用整数运算符来判断内存可用量的值是否小于1024,若小于则会提示“Insufficient Memory”(内存不足)的字样:
[ $FreeMem -lt 1024 ] && echo "Insufficient Memory"

[ free -m | grep Mem: awk '{print $4}' -lt 1024 ] && mail -s memory root@linuxprobe.com
当内存达到某个值的时候,邮件发出。

字符串比较语句用于判断测试字符串是否为空值
操作符
作用

比较字符串内容是否相同
!=
比较字符串内容是否不同
-z
判断字符串内容是否为空

接下来通过判断String变量是否为空值,进而判断是否定义了这个变量:
[root@linuxprobe ~]# [ -z $String ]
[root@linuxprobe ~]# echo $?
04.3 流程控制语句
4.3.1 if条件测试语句
if 如果
判断目录是否存在,存在,向目录里写入。

下面使用单分支的if条件语句来判断/media/cdrom文件是否存在,若存在就结束条件判断和整个Shell脚本,反之则去创建这个目录:
[root@linuxprobe ~]# vim mkcdrom.sh
#!/bin/bash
DIR="/media/cdrom"
if [ ! -e $DIR ]
then
mkdir -p $DIR
fi

if条件语句的双分支结构由if、then、else、fi关键词组成,它进行一次条件匹配判断,如果与条件匹配,则去执行相应的预设命令;反之则去执行不匹配时的预设命令,相当于口语的“如果……那么……或者……那么……”。if条件语句的双分支结构也是一种很简单的判断结构。
使用双分支的if条件语句来验证某台主机是否在线,然后根据返回值的结果,要么显示主机在线信息,要么显示主机不在线信息。
$?变量,作用是显示上一次命令的执行返回值

[root@localhost ~]# vim chkhost.sh
#!/bin/bash
ping#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
if [ $? -eq 0 ]
then
echo "Host $1 is On-line."
else
echo "Host $1 is Off-line."
fi
-c 3 ping 3次
-i 0.2 ping 间隔时间
-w 3 ping 最长超时时间
&>/dev/null 将所有信息输出到黑洞文件
/dev/null 相当于中没有回收功能的Windows回收站,任何信息或者文件进入后就会消失掉

[root@localhost ~]# bash chkhost.sh 192.168.1.110
Host 192.168.1.110 is Off-line.
[root@localhost ~]# bash chkhost.sh 192.168.1.120
Host 192.168.1.120 is On-line.
[root@localhost ~]# bash chkhost.sh 192.168.1.130
Host 192.168.1.130 is Off-line.
[root@localhost ~]# bash chkhost.sh 127.0.0.0
Host 127.0.0.0 is Off-line.
[root@localhost ~]# bash chkhost.sh 127.0.0.1
Host 127.0.0.1 is On-line.

使用多分支的if条件语句来判断用户输入的分数在哪个成绩区间内,然后输出如Excellent、Pass、Fail等提示信息。
read是用来读取用户输入信息的命令,能够把接收到的用户输入信息赋值给后面的指定变量,-p参数用于向用户显示一定的提示信息。
[root@localhost ~]# vim chkscore.sh
[root@localhost ~]# cat chkscore.sh
#!/bin/bash

duofenzhi if tiaojian yuju panduan fenshu zai nage chengji qujian.

read -p "Enter your score(0-100):" GRADE
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; then
echo "$GRADE is Excellent"
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ] ; then
echo "$GRADE is Pass"
else
echo "$GRADE is Fail"
fi
[root@localhost ~]# bash chkscore.sh
Enter your score(0-100):88
88 is Excellent
[root@localhost ~]# bash chkscore.sh
Enter your score(0-100):77
77 is Pass

输入1000分 结果是如何?
[root@localhost ~]# bash chkscore.sh
Enter your score(0-100):1000
1000 is Fail

批量检测主机是否在的脚本

4.3.2 for 条件循环语句
使用for循环语句从列表文件中读取多个用户名,然后为其逐一创建用户账户并设置密码。首先创建用户名称的列表文件users.txt,每个用户名称单独一行。
首先创建一个主机列表文件ipadds.txt:
[root@linuxprobe ~]# vim ip.txt
192.168.1.110
192.168.1.120
192.168.1.130

然后前面的双分支if条件语句与for循环语句相结合,让脚本从主机列表文件ipadds.txt中自动读取IP地址(用来表示主机)并将其赋值给IP变量,从而通过判断ping命令执行后的返回值来逐个测试主机是否在线。脚本中出现的$(命令)是一种完全类似于第3章的转义字符中反引号命令的Shell操作符,效果同样是执行括号或双引号括起来的字符串中的命令。

使用双分支if条件语句与for循环语句相结合,让脚本从主机列表文件ipadds.txt中自动读取IP地址,并将其赋值给IP变量,从而通过判断ping命令执行后的返回值来逐个测试主机是否在线。

[root@linuxprobe ~]# vim checkHosts.sh
#!/bin/bash
for IP in cat ip.txt
do
ping -c 3 -i 0.2 -w 3 $IP &> /dev/null
if [ $? -eq 0 ] ;then
echo "Host $IP is On-line ."
else
echo "Host $IP is Off-line ."
fi
done
[root@linuxprobe ~]# bash checkHosts.sh
Host 192.168.1.110 is Off-line .
Host 192.168.1.120 is On-line .
Host 192.168.1.130 is Off-line .

for循环语句,批量创建用户。读取用户名称,使用脚本命令read读取用户输入的密码,赋值给PASSWD变量,使用“id 用户名”查看用户信息,使用$?判断用户是否存在。
[root@localhost ~]# vim users.txt
[root@localhost ~]# cat users.txt
andy
barry
xiaolu
xiaoli
xiaozhang
xiaohuang
xiaomei
xiaoyan
[root@localhost ~]# vim jianyonghu.sh
[root@localhost ~]# cat jianyonghu.sh
#!/bin/bash
#for循环语句,批量创建用户。读取用户名称,使用脚本命令read读取用户输入的密码,赋值给PASSWD变量,使用“id 用户名”查看用户信息,使用$?判断用户是否存在。
read -p "Enter":PASSWD
for UNAME in cat users.txt
do
id $UNAME &> /dev/null
if [ $? -eq 0 ]
then
echo "Alread exists"
else
useradd $UNAME &> /dev/null
echo "PASSWD" |passwd --stdin $UNAME &> /dev/null
if [ $? -eq 0 ]
then
echo "$UNAME , creat success"
else
echo "$UNAME , creat failure"
fi
fi
done
[root@localhost ~]# bash jianyonghu.sh
Enter:PASSWDredhat11
andy , creat success
barry , creat success
xiaolu , creat success
xiaoli , creat success
xiaozhang , creat success
xiaohuang , creat success
xiaomei , creat success
xiaoyan , creat success
[root@localhost ~]# tail -6 /etc/passwd
xiaolu:x:1005:1005::/home/xiaolu:/bin/bash
xiaoli:x:1006:1006::/home/xiaoli:/bin/bash
xiaozhang:x:1007:1007::/home/xiaozhang:/bin/bash
xiaohuang:x:1008:1008::/home/xiaohuang:/bin/bash
xiaomei:x:1009:1009::/home/xiaomei:/bin/bash
xiaoyan:x:1010:1010::/home/xiaoyan:/bin/bash
[root@localhost ~]# bash jianyonghu.sh
Enter:PASSWDredhat11
Alread exists
Alread exists
Alread exists
Alread exists
Alread exists
Alread exists
Alread exists
Alread exists

使用反引号``,执行一个命令。
使用$(命令),执行一个命令。

for 循环 范围
for 循环 条件

4.3.3 while条件循环语句
猜测数值大小的脚本Guess.sh。 该脚本使用$RANDOM变量来调取出一个随机的数值(范围为0~32767),将这个随机数对1000进行取余操作,并使用expr命令取得其结果,再用这个数值与用户通过read命令输入的数值进行比较判断。这个判断语句分为三种情况,分别是判断用户输入的数值是等于、大于还是小于使用expr命令取得的数值。当前,现在这些内容不是重点,我们当前要关注的是while条件循环语句中的条件测试始终为true,因此判断语句会无限执行下去,直到用户输入的数值等于expr命令取得的数值后,这两者相等之后才运行exit 0命令,终止脚本的执行。

[root@localhost 桌面]# vim guess.sh
[root@localhost 桌面]# cat guess.sh
#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
while true
do
read -p "Enter:" INT
let TIMES++
if [ $INT -eq $PRICE ] ;then
echo "OK,$INT"
echo "Times is $TIMES ci"
exit 0
elif [ $INT -gt $PRICE ] ;then
echo "high"
else
echo "low"
fi
done
[root@localhost 桌面]# bash guess.sh
Enter:520
high
Enter:260
low
Enter:391
high
Enter:329
low
Enter:356
high
Enter:343
low
Enter:352
high
Enter:348
low
Enter:350
high
Enter:349
OK,349
Times is 10 ci

4.3.4 case 条件测试语句
在前文介绍的Guess.sh脚本中有一个致命的弱点—只能接受数字!您可以尝试输入一个字母,会发现脚本立即就崩溃了。原因是字母无法与数字进行大小比较,例如,“a是否大于等于3”这样的命题是完全错误的。我们必须有一定的措施来判断用户的输入内容,当用户输入的内容不是数字时,脚本能予以提示,从而免于崩溃。
通过在脚本中组合使用case条件测试语句和通配符(详见第3章),完全可以满足这里的需求。接下来我们编写脚本Checkkeys.sh,提示用户输入一个字符并将其赋值给变量KEY,然后根据变量KEY的值向用户显示其值是字母、数字还是其他字符。
[root@linuxprobe ~]# vim checkkeys.sh
#!/bin/bash
read -p "Enter:" KEY
case "$KEY" in
[a-z]|[A-Z])
echo "zimu"
;;
[0-9])
echo "shuzi"
;;
*)
echo "Luanma"
esac
[root@linuxprobe ~]# bash checkkeys.sh
Enter:a
zimu
[root@linuxprobe ~]# bash checkkeys.sh
Enter:8
shuzi
[root@linuxprobe ~]# bash checkkeys.sh
Enter:
Luanma
[root@localhost 桌面]# bash checkkeys.sh
Enter:34
[root@localhost 桌面]# bash checkkeys.sh
Enter:23sd
Luanma
[root@localhost 桌面]# bash checkkeys.sh
Enter:479$09xc
Luanma

输入两位数34,57,输入 数字加字母, 则是输出" luanma " 。

打包网站数据做备份:

if 单 双 多分支
for 范围
while 条件
case 判断

4.4 计划任务服务程序
at 一次性的计划任务
crond 周期性的计划任务

at 一次性的计划任务
[root@linuxprobe ~]# at 22:10
at> reboot
at> <EOT> #ctrl d 保存
job 2 at Wed May 1 22:10:00 2019
[root@linuxprobe ~]# at -l #查看 at 任务名称
2 Wed May 1 22:10:00 2019 a root
在使用at命令来设置一次性计划任务时,默认采用的是交互式方法。例如,使用下述命令将系统设置为在今晚23:30分自动重启网站服务。
[root@linuxprobe ~]# at 23:30
at > systemctl restart httpd
at > 此处请同时按下Ctrl+d来结束编写计划任务
job 3 at Mon Apr 27 23:30:00 2015
[root@linuxprobe ~]# at -l
3 Mon Apr 27 23:30:00 2016 a root
[root@linuxprobe ~]# atrm 2
果读者想挑战一下难度更大但简捷性更高的方式,可以把前面学习的管道符(任意门)放到两条命令之间,让at命令接收前面echo命令的输出信息,以达到通过非交互式的方式创建计划一次性任务的目的。
[root@linuxprobe ~]# echo "systemctl restart httpd" | at 23:30
job 4 at Mon Apr 27 23:30:00 2015
[root@linuxprobe ~]# at -l
3 Mon Apr 27 23:30:00 2016 a root
4 Mon Apr 27 23:30:00 2016 a root

at 时间 创建计划任务
at -l 查看计划任务
atrm 编码 删除计划任务
at -c 编码 查看计划任务的详细情况

crond 是一个服务
crondtab 配置工具 默认调用vim 编辑器
crontab -e 创建、编辑计划任务
crontab -l 查看当前计划任务
crontab -r 删除某条计划任务

需要注意的是,如果有些字段没有设置,则需要使用星号(*)占位,如图4-23所示。

分 时 日 月 星期 命令
分 0~59 整数
时 0~23 整数
日 0~31 整数
月 0~12 整数
星期 0~7 整数 0和7 都是星期日
命令 要执行的命令或程序脚本

假设在每周一、三、五的凌晨3点25分,都需要使用tar命令把某个网站的数据目录进行打包处理,使其作为一个备份文件。我们可以使用crontab -e命令来创建计划任务。为自己创建计划任务无需使用-u参数,具体的实现效果的参数如crontab -l命令结果所示:
[root@linuxprobe ~]# crontab -e
no crontab for root - using an empty one
crontab: ×××talling new crontab
[root@linuxprobe ~]# crontab -l
25 3 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot

[root@localhost 桌面]# crontab -e
crontab: ×××talling new crontab
[root@localhost 桌面]# crontab -l
0 1 1 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot
0 1 1-5 /usr/bin/rm-rf /tmp/*

分 时 日 月 星期 命令
0 1 1-5 每周一到五 的凌晨一点
0 /4 1-5 每周一到五 的每隔4小时
0 1
1,3,5 每周的1,3,5日 的凌晨一点
0 1 1-5
* 每月的1-5日 的凌晨一点

《Linux就该这么学》    第4章 vim编辑器与shell 命令脚本
《Linux就该这么学》    第4章 vim编辑器与shell 命令脚本
《Linux就该这么学》    第4章 vim编辑器与shell 命令脚本
《Linux就该这么学》    第4章 vim编辑器与shell 命令脚本
《Linux就该这么学》    第4章 vim编辑器与shell 命令脚本
《Linux就该这么学》    第4章 vim编辑器与shell 命令脚本
《Linux就该这么学》    第4章 vim编辑器与shell 命令脚本
《Linux就该这么学》    第4章 vim编辑器与shell 命令脚本
《Linux就该这么学》    第4章 vim编辑器与shell 命令脚本
《Linux就该这么学》    第4章 vim编辑器与shell 命令脚本
《Linux就该这么学》    第4章 vim编辑器与shell 命令脚本
《Linux就该这么学》    第4章 vim编辑器与shell 命令脚本
《Linux就该这么学》    第4章 vim编辑器与shell 命令脚本
《Linux就该这么学》    第4章 vim编辑器与shell 命令脚本
《Linux就该这么学》    第4章 vim编辑器与shell 命令脚本
《Linux就该这么学》    第4章 vim编辑器与shell 命令脚本

转载于:https://blog.51cto.com/13615251/2396019

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值