linux查询脚本定时任务命令,find命令常见用法与linux定时计划任务

find命令:

一种实时查找工具,通过遍历指定路径下的文件系统完成文件查找。

find [OPTION]...[查找路径] [查找条件] [处理动作]

查找路径:指定具体目标路径,默认为当前路径

查找条件:指定的查找标准,可以为文件名,类型,大小,权限等标准进行,默认为找出路径下的所有文件

处理动作:对查找的文件执行什么动作;默认输出至屏幕

查找条件:文件名,属主属组,文件类型,文件大小,时间戳,权限

根据文件名查找:

-name "文件名称": 支持使用glob:*,?,[],[^]

-iname "文件名称": 不区分字母大小写

-regex "PATTERN": 以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称

根据属主属组查找:

-user USERNAME:查找属主为指定用户的文件

-group GRPNAME:查找属组为指定组的文件

-uid UserID:查找属主为指定UID号的文件

-gid GroupID:查找属主为指定GID号的文件

-nouser:查找没有属主的文件

-nogroup:查找没有属组的文件

根据文件类型查找:

-type TYPE:

f:普通文件

d:目录文件

l:符号链接

s:套接字文件

b:块设备文件

c:字符设备文件

p:管道文件

根据文件大小查找:

-size [+|-] #UNIT

常用单位:k,M,G,同时支持b,c,w

#UNIT:(#-1,#],查找大于#-1,小于等于#UNIT大小的文件

+#UNIT:(#,∝)

-#UNIT:[0,#-1]

根据时间戳查找:

以“天”为单位:

-atime [+|-] #

-mtime [+|-] #

-ctime [+|-] #

以“分”为单位:

-amin [+|-] #

-mmin [+|-] #

-cmin [+|-] #

#:[#,#+1)

+#:[#+1,∝)

-#:[0,#)

根据权限查找:

-perm [/|-] MODE

MODE:精确权限匹配,指定的MODE即为文件或目录所有的权限。如果指定为0,即没有任何权限。

如:400,查找指定目录下属主只有可读权限,属组和其他没有任何权限的文件或目录。

/MODE:任何一类对象权限,只要匹配一位即可,一位:指u,g,o中rwx任意以指定的MODE相匹配即可

如:/524,只要u可读或者可执行,或者g可写,或者o可读的文件和目录都将被匹配到。其他未指定的位可为0或1

-MODE:每一类对象都必须同时拥有为其指定的权限标准。如果指定为0,权限可忽略。

如:-400,查找指定目录下属主必须具有可读权限,属组和其他用户权限可以忽略

-520,查找指定目录下属主必须具有可读写权限,属组必须具有可写权限,其他用户权限可忽略

-424,查找指定目录下属主必须具有可读权限,属组必须具有有可写权限,其他用户有可读权限

组合条件:

-a:非

-o:或

-not,!:非

处理动作:

-print:默认选项

-ls:类似对查找到的文件执行"ls -l"命令

-delete:删除查找到的文件

-fls /path/to/somefile:查找到的所有长格式文件保存至指定文件

-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,要求进行交互式确认

-exec COMMAND {} \;对查找到的每个文件执行由COMMAND指定的命令,

{}: 用于引用查找到的文件名称自身;

有些命令可能不能接受过多参数,导致命令执行失败,可通过xargs避免此问题

find | xargs COMMAND

1、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello();[root@allen ~]# grep -E --color=auto "\\(\)" /etc/rc.d/init.d/functions

checkpid() {

daemon() {

killproc() {

pidfileofproc() {

pidofproc() {

status() {

success() {

failure() {

passed() {

warning() {

action() {

strstr() {

2、使用echo命令输出一个绝对路径,使用grep取出其基名;

基名:指不包含文件的目录路径,仅含文件名本身。可以通过basename来查询文件的基名,多用于脚本中。[root@allen ~]# echo /etc/sysconfig/network-scripts/ | grep -E -o "[^/]+/?$" | cut -d"/" -f1

network-scripts

扩展:取出其路径名[root@allen ~]# echo /etc/sysconfig/network-scripts/ | egrep -o "(/[^/]+)+/." | grep -E -o "(/[^/]+)+/" | grep -E -o "(/[^/]+)+"

/etc/sysconfig

3、找出ifconfig命令结果中的1-255之间数字;

①要获取1-255之间的数字,需对数字进行拆分,分段获取:1-9,10-99,100-199,200-249,250-255

②基本正则表达式不支持元字符‘|’,所以需要使用参数-E,或者使用egrep查询。

③选项-o,仅显示匹配的字符

④此处需要用到单词锚定符/>,或者/b/b来完整匹配一个数字[root@allen ~]# ifconfig | grep -E -o "\|\|\|\|\<25[0-5]\>"

4、查找当前系统上没有属主或属组的文件;[root@localhost ~]# find / -nouser -o -nogroup

查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录;[root@localhost ~]# find / \( -nouser -o -nogroup \) -a -atime -3

5、查找/etc目录下大于1M,且类型为普通文件的所有文件;[root@localhost ~]# find /etc -size +1M -type f -exec ls -lh {} \;

-rw-r--r--. 1 root root 1.1M Apr 24  2015 /etc/pki/tls/certs/ca-bundle.trust.crt

-rw-r--r--. 1 root root 8.0M Nov 17 09:27 /etc/selinux/targeted/modules/active/policy.kern

-rw-r--r--. 1 root root 8.0M Nov 17 09:27 /etc/selinux/targeted/policy/policy.24

-rw-r--r--. 1 root root 2.2M Nov 17 09:29 /etc/gconf/gconf.xml.defaults/%gconf-tree.xml

6、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的文件;[root@localhost hallen]# find /etc/init.d/ -perm -113 -ls

7、查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文件;[root@localhost ~]# find /etc -not \( -user root -o -user hadoop \) -a -mtime -7 -ls[root@localhost ~]# find /etc -not -user root -a -not -user hadoop -a -mtime -7 -ls

8、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;[root@localhost tmp]# cp /etc/rc.d/rc.sysinit /tmp/rc.sysinit

[root@localhost tmp]# sed 's@^[[:space:]]\+@#@' /tmp/rc.sysinit

9、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符[root@localhost tmp]# sed -i 's/^#[[:space:]]\+//' /tmp/rc.sysinit

[root@localhost tmp]#sed '/^#[[:space:]]\+/ d' /tmp/rc.sysinit

10、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;[root@localhost tmp]# sed -ri '/enabled=0|gpgcheck=0/ s/0/1/'  /etc/yum.repos.d/CentOS-Media.repo

周期性任务计划:cron

在centos中,周期性任务计划相关程序包包含cronnie,cronie-anacron,crontabs三个。

cronie是主程序包,提供了crond守护进程及相关辅助工具

cronie-anacron是cronie的补充程序,用于监控cronie的任务执行状况。

crontabs包含Centos提供系统维护任务

系统级别的任务计划定义在/etc/crontab配置文件中。

用户任务计划通过crontab命令来添加,每个用户定义的计划任务都会在/var/spool/cron/目录下存在一个以用户名命名文件。

crontab命令:

crontab [-u user] [-l | -e | -r] [-i]

-l:列出所有任务

-e:编辑任务

-r:移除所有任务

-i:通-r一同使用,交互式选择移除指定任务

-u user: 仅root用户可运行,代为指定用户管理cron任务

cron任务时间说明:

cron用5个时间段来定义计划任务执行周期,分别为:分钟,小时,天,月,周。

系统cron任务

# 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

时间表示法:

1) 特定值:给定时间点有效取值范围内的值

2) *:给定时间点上有效取值范围内的所有值,表示"每..."

3) 离散取值:用逗号","分隔

4) 连续取值:-

5) 在指定时间范围上,定义步长: */# (#为整数)

对cron任务来说,如需使用%号,需要使用转义字符进行转义。因%在cron中有特殊用途

11、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20161202[root@allen ~]# crontab -e

0 2 * * 2,4,6 cp /var/log/messages /backup/logs/messages-`date +\%Y\%m\%d`

12、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中[root@allen ~]# crontab -e

0 */2 * * * grep -E '^S' /proc/meminfo >> /stats/memory.txt

13、写一个脚本创建10用户user10-user19;密码同用户名;#!/bin/bash

#useradd user10 to user19

for i in $(seq 10 19);do

id user$i > /dev/null 2>&1

status=`echo $?`

if [ $status -ne 0 ];then

useradd user$i > /dev/null 2>&1

fi

if id user$i > /dev/null 2>&1;then

echo "user$i" | passwd --stdin user$i > /dev/null 2>&1

fi

done

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值