12-1 ubuntu常用命令(crontab、tar、grep)
1. crontab
cron = Chronos 希腊文时间。cron是一个Linux下的后台进程,用来执行计划任务。
想要让cron执行你指定的任务,首先就要编辑crontab文件。每一个用户都有一个 crontab 文件(如用户sea的crontab即/var/spool/cron/crontabs/sea),来允许他们指定需要执行的任务和时间。
crontab -e # 编辑当前用户的crontab文件内容 crontab -l # 显示当前用户的crontab文件内容 crontab -r # 从/var/spool/cron目录中删除当前用户的crontab文件 crontab -i # 在删除用户的crontab文件时给确认提示,即-ri crontab -u user1 # 用来设定用户user1的crontab服务
crontab文件中的每一行代表一个定期执行的任务,分为6个部分。前 5部分用于设定时间;第6部分是要执行的操作。
m h dom mon dow command
m : minute 分钟0~59 每分钟用*或者 */1表示
h: hour 小时0~23
dom: day of month 日期1~31
mon: month 月份1~12
dow: day of week 星期0~7,星期天可以用0或7表示
除了这些固定值外,还可以配合星号(*),逗号(,),和斜线(/)来表示一些其他的含义:
* 表示任意值,比如在小时部分填写 * 代表任意小时(每小时)
, 可以允许在一个部分中填写多个值,比如在分钟部分填写 1,3 表示一分钟或三分钟
/ 一般配合 * 使用,代表每隔多长时间,比如在小时部分填写 */2 代表每隔两分钟。所以 */1 和 * 没有区别。*/2 可以看成是能被2整除的任意值。
* * * * * # 每隔一分钟执行一次任务 0 * * * * # 每小时的0点执行一次任务,比如1:00,2:00... 6,10 * 2 * * # 每个月2号,每小时的6分和10分执行一次任务 */3,*/5 * * * * # 每隔3分钟或5分钟执行一次任务,比如10:03,10:05,10:06 */2 * * * * date >> ~/time.log # 每隔2分钟,往 ~/time.log 中追加一次时间
注意command不要超过64个字节,若是命令比较长,可以放在文件中,执行文件,如:
*/2 * * * * /bin/bash ~/work.txt # 每个2分钟,用 /bin/bash 来执行 ~/work.txt 文件
2. tar
压缩与解压。参数如下:
-c: 建立一个压缩文件的参数指令(create 的意思);
-x: 解开一个压缩文件的参数指令!
-t: 查看 tarfile 里面的文件!
特别注意 c/x/t 同时仅能存在一个,因为不可能同时压缩与解压缩。
-z: 是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j: 是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v: 压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f: 使用档名,请留意,在 f 之后要立即接文件名
-p: 使用原文件的原来属性(属性不会依据使用者而变)
-P: 可以使用绝对路径来压缩!
-N: 比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
tar -cvf /tmp/etc.tar /etc # 将整个 /etc目录下的文件全部打包成为成 etc.tar且放在/tmp/下。仅打包,不压缩! tar -zcvf /tmp/etc.tar.gz /etc # 打包后,以 gzip 压缩。文件后缀 file1.tar.gz 等同于 file1.tgz tar -jcvf /tmp/etc.tar.bz2 /etc # 打包后,以 bzip2 压缩 tar -xf a.tar.gz # 解压文件,能自动识别是什么格式压缩的 tar -xf a.tar.gz -C /tmp # 指定解包路径为/tmp
3. grep
grep (global search regular expression_r(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grip better a.txt # 列出在a.txt中含有待匹配文本better的行 grip -c better a.txt # --count 计算符合样式的列数 grip -v better a.txt # --revert-match 显示不包括匹配文本的所有行 grip -l better a.txt # --file-with-matches列出在哪个文件中查找。比如有时文件是变量时用 grip -i beeter a.txt # --ignore-case不区分大小写 grip -o better a.txt # 只显示搜索的关键字 grip -n better a.txt # 显示行号,和结果行
初识正则表达式:
^ : 匹配开头
$ : 匹配结尾
[] : 范围匹配
[a-z] : 匹配有小写字母
[A-Z] : 匹配所有大写字母
[0-9] : 匹配所有数字
. : 匹配单个字符
* : 表示*前面的内容出现0次或多次
+ : 表示+前面的内容出现1次或多次
? : 表示?前面的内容出现0次或1次
grep -E "^S" z.txt # 查询所有以S开头的行 grep -E "d$" z.txt # 查询所有以d结尾的行 grep -E "[0-9]" z.txt # 匹配所有数字,且显示其所在的行 grep -E "[^0-9]" z.txt # 匹配所有非数字 grep -E "[1-5]" z.txt # 所有含有数字1-5的行 grep -E "[0-9a-zA-Z]+@[0-9a-zA-Z]+\.[0-9a-zA-Z]+" z.txt # 匹配邮箱
浙公网安备 33010602011771号