Linux学习笔记六
Linux任务计划crontab
周期性的清理/tmp
、周期性的去备份一次数据库、周期性的分析日志等,因此需要利用Linux系统的计划工具—crontab(用于设置周期性被执行的命令)。
crontab命令从输入设备读取指令,并将其存放于crontab文件中,以供之后读取和执行。通常情况下,crontab存储的指令被守护进程激活,crond为其守护进程,crond常常在后台运行,每一分钟会检查一次是否由预定的作业需要执行。
crontab指令格式:
# Example of job definition:
.———————— minute (0 - 59)
| .——————- hour (0 - 23)
| | .————— day of month (1 - 31)
| | | .———- month (1 - 12) OR jan,feb,mar,apr …
| | | | .—— day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | | | # * user-name command to be executed
crontab的使用
1 | crontab -e |
以上命令来添加一个计划任务。
然后通过以下命令来查看添加了哪些内容:
1 | crontab -l |
确保cron
是否成功在后台启动的方法:
1 | ps aux | grep cron |
在不需要这个任务时可以使用以下命令来删除一个任务:
1 | crontab -r |
命令执行顺序控制和管道
顺序执行多条命令
安装软件
使用apt-get
安装软件,然后安装完成后立即运行安装的软件或命令工具,如下:
1 | sudo apt-get update |
但要是一次性输入完,让它自己去依次执行各个命令,简单的顺序执行可以使用;
来完成:
1 | sudo apt-get update;sudo apt-get install some-tool;some-tool |
有选择的执行命令
即上一条命令执行成功才继续下一条,或者不成功又该做出其它处理。例如:
1 | which cowsay>/dev/null && cowsay -f head-in ohch~ |
上面的&&
就是用来实现选择性执行的,它表示如果前面的命令执行结果(不是表示终端输出的内容而是表示命令执行状态的结果)返回0则执行后面的,否则不执行,可以从$?
环境变量获取上一次命令的返回结果。
管道
管道是一种通信机制,通常用于进程间的通信(也可以通过socket进行网络通信),它表现出来的形式就是将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。
其中管道又分为匿名管道和具名管道。匿名管道在使用时通常是用分隔符|
表示。
查看/etc
目录下有哪些文件和目录,使用ls
来查看:
1 | ls -al /etc |
可是内容太多,屏幕并不能完全显示,这时就需要使用滚动条或者快捷键滚动窗口来查看,但也可以使用管道:
1 | ls -al /etc | less |
通过管道将前一个命令(ls
)的输出作为下一个命令(less
)的输入,然后就可以一行一行的看。
cut
命令打印输出文件
打印 /etc/passwd
文件中以 :
为分隔符的第 1 个字段和第 6 个字段分别表示用户名和其家目录:
1 | cut /etc/passwd -d ':' -f 1,6 |
打印 /etc/passwd
文件中每一行的前 N 个字符:
1 | # 前五个(包含第五个) |
grep命令—查找
一般形式为:
1 | grep [命令选项]... 用于匹配的表达式 [文件] |
例如:
1 | grep -rnI "shiyanlou" ~ |
-r
参数表示递归搜索子目录中的文件,-n
表示打印匹配项行号,-I
表示忽略二进制文件。
wc命令
该命令用于统计并输出一个文件中的行、单词和字节的数目。
1 | 行数 |
sort排序
该功能是将输入按照一定方式排序,然后再输出,它支持的排序有按字典排序、数字排序、按月份排序、随机排序、反转排序和指定特定字段进行排序。
默认为字典排序:
1 | cat /etc/passwd | sort |
反转排序:
1 | cat /etc/passwd | sort -r |
按特定字段排序:
1 | cat /etc/passwd | sort -t':' -k 3 |
-t
参数用于指定字段的分隔符;-k
字段号用于指定对哪一个字段进行排序。