linux零碎笔记文件操作、定时任务等

原创 2016年08月31日 13:04:25

统计某文件夹下文件的个数
ls -l |grep “^-“|wc -l

统计某文件夹下目录的个数
ls -l |grep “^d”|wc -l

统计文件夹下文件的个数,包括子文件夹里的
ls -lR|grep “^-“|wc -l

如统计/home/han目录(包含子目录)下的所有js文件则:
ls -lR /home/han|grep js|wc -l 或 ls -l “/home/han”|grep “js”|wc -l

统计文件夹下目录的个数,包括子文件夹里的
ls -lR|grep “^d”|wc -l
说明:
ls -lR
长列表输出该目录下文件信息(R代表子目录注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)

grep “^-”
这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d

wc -l
统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。

======================================
如果只查看文件夹
ls -d 只能显示一个.
find -type d 可以看到子文件夹
ls -lF |grep / 或 ls -l |grep ‘^d’ 只看当前目录下的文件夹,不包括往下的文件夹


删除3天前文件
/usr/local/webapp_share/WeChat/data/mobile/radar/

[root@wx12240 radar]# find /usr/local/webapp_share/WeChat/data/mobile/radar/ -mtime +3 -name “*.png” -exec rm -rf {} \;
 find /usr/local/webapp_share/WeChat/data/mobile/radar/ -mtime +3 -name “*.png” -exec rm -rf {} \;

语句写法:
find 对应目录 -mtime +天数 -name “文件名” -exec rm -rf {} \;
例1:
  find /usr/local/backups -mtime +10 -name “.” -exec rm -rf {} \;
  将/usr/local/backups目录下所有10天前带”.”的文件删除
  find:Linux的查找命令,用户查找指定条件的文件
  /usr/local/backups:想要进行清理的任意目录
  -mtime:标准语句写法
  +10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件
  “.“:希望查找的数据类型,”.jpg”表示查找扩展名为jpg的所有文件,”“表示查找所有文件,这个可以灵活运用,举一反三
  -exec:固定写法
  rm -rf:强制删除文件,包括目录
  {} \; :固定写法,一对大括号+空格++;
  若嫌每次手动执行语句太麻烦,可以将这小语句写到一个可执行文件中,再设置cron调度执行,那就可以让系统自动去清理相关文件。
例2:
  1.#touch /usr/local/bin/clear
  #chmod 777 clear
  新建一个可执行文件clear
  2.vi clear
  编辑clear文件如下:
  #!/bin/sh
  find /usr/local/backups -mtime +10 -name “.” -exec rm -rf {} \;
  ok,保存退出
  3.#crontab -e
  将clear文件加入到系统计划任务,到点自动执行
  输入:
  * 2 * * */usr/local/bin/clear
  这里的设置是每天凌晨2点执行clear文件进行数据清理,可以研究一下cron,制定自己需要的计划任务
  示例:
  #!/bin/sh
  find /usr/local/jboss-4.2.3.GA/server/default/log -mtime +6 -name”server.log.*” -exec rm -rf {} \;
  exit
  [root@web3 ~]# crontab -l
  * 2 * * * sh /root/AutoDelLog.sh
  这样每天晚上2点执行这个脚本,脚本是删除6天前的文件
find /etc/rc.d -name ‘*crond’ -exec file {} \;
  查找/etc/rc.d目录下面所有以crond结束的文件,并使用file指令查看其属性,注意:exec和file间是一个空格,file和{}间是一个空格,{}和\;之间是一个空格,\;是一个整体。


定时任务
linux下定时执行任务的方法
在LINUX中你应该先输入crontab -e,然后就会有个vi编辑界面,再输入0 3 * * 1 /clearigame2内容到里面 :wq 保存退出。

在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。
cron的配置文件称为“crontab”,是“cron table”的简写。

一、cron在3个地方查找配置文件:
1、/var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。
一般一个用户最多只有一个crontab文件。

二、/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。

三、/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。

四、权限
crontab权限问题到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在
用法如下:
1、如果两个文件都不存在,则只有root用户才能使用crontab命令。
2、如果cron.allow存在但cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。
3、如果cron.allow不存在, cron.deny存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。
4、如果两个文件都存在,则列在cron.allow文件中而且没有列在cron.deny中的用户可以使用crontab,如果两个文件中都有同一个用户,
以cron.allow文件里面是否有该用户为准,如果cron.allow中有该用户,则可以使用crontab命令。

五、cron服务
  cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
  /sbin/service crond start //启动服务
  /sbin/service crond stop //关闭服务
  /sbin/service crond restart //重启服务
  /sbin/service crond reload //重新载入配置
  /sbin/service crond status //查看服务状态

在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。
每个域之间使用空格或者制表符分隔。格式如下:
  minute hour day-of-month month-of-year day-of-week commands
合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday) commands(代表要执行的脚本)
除了数字还有几个个特殊的符号就是”“、”/”和”-“、”,”,代表所有的取值范围内的数字,”/”代表每的意思,”/5”表示每5个单位,”-“代表从某个数字到某个数字,”,”分开几个离散的数字。

几个例子:
每天早上6点
0 6 * * * echo “Good morning.” >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

每两个小时
0 /2 * * echo “Have a break now.” >> /tmp/test.txt

晚上11点到早上8点之间每两个小时和早上八点
0 23-7/2,8 * * * echo “Have a good dream” >> /tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * 1-3 command line

1月1日早上4点
0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 HOME=/

每小时执行/etc/cron.hourly内的脚本
01 * * * * root run-parts /etc/cron.hourly
每天执行/etc/cron.daily内的脚本
02 4 * * * root run-parts /etc/cron.daily

每星期执行/etc/cron.weekly内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly

每月去执行/etc/cron.monthly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly

注意: “run-parts”这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。  

每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。
5,15,25,35,45,55 16,17,18 * * * command

每周一,三,五的下午3:00系统进入维护状态,重新启动系统。
00 15 * * 1,3,5 shutdown -r +5

每小时的10分,40分执行用户目录下的innd/bbslin这个指令:
10,40 * * * * innd/bbslink

每小时的1分执行用户目录下的bin/account这个指令:
1 * * * * bin/account

每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔):
20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)  

每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm -f expire.1st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。
12,55 3 4-9 1,4 * /bin/rm -f expire.1st#@62;#@62;mm.txt

at命令实现定时任务
  假如我们只是想要让特定任务运行一次,那么,这时候就要用到at监控程序了。
at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它 。at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。

at命令执行流程如下

  # at 2:05 tomorrow

  at>/home/kyle/do_job

  at> Ctrl+D

  AT Time中的时间表示方法

  ———————————————————————–

  时 间 例子 说明

  ———————————————————————–

  Minute at now + 5 minutes 任务在5分钟后运行

  Hour at now + 1 hour 任务在1小时后运行

  Days at now + 3 days 任务在3天后运行

  Weeks at now + 2 weeks 任务在两周后运行

  Fixed at midnight 任务在午夜运行

  Fixed at 10:30pm 任务在晚上10点30分

  注意:linux默认为不启动,而ubuntu默认为启动的。检查是否启动,用service atd检查语法,用service atd status检查atd的状态,用service atd start启动atd服务。

  查看at执行的具体内容:一般位于/var/spool/at目录下面, 用vi打开,在最后一部分就是你的执行程序

参数详解
-V : 印出版本编号
-q : 使用指定的伫列(Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者可以同时使用多个 queue,而 queue 的编号为 a, b, c… z 以及 A, B, … Z 共 52 个
-m : 即使程序/指令执行完成后没有输出结果, 也要寄封信给使用者
-f file : 读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入
网络应用

-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 删除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已经完成但尚未删除的指定

删除任务
atrm 2

三天后的下午 5 点锺执行 /bin/ls :
at 5pm 3 days /bin/ls

三个星期后的下午 5 点锺执行 /bin/ls :
at 5pm 2 weeks /bin/ls

明天的 17:20 执行 /bin/date :
at 17:20 tomorrow /bin/date

1999 年的最后一天的最后一分钟印出 the end of world !
at 23:59 12/31/1999 echo the end of world !

版权声明:本文为博主原创文章,未经博主允许不得转载。

linux初入门问题零碎(ubuntu为主)

1.ubuntu安装 U盘启动 f8 f12...依电脑型号而定。 防止直接跳过安装到用户界面,前一半不连接网络。 中文简体-》可不选-》其他,自定义分区(双系统,应该是要在当前系统中安装)...
  • BadMushroom
  • BadMushroom
  • 2017年10月29日 11:55
  • 125

python文件操作笔记

文件操作:长期保存数据以便重复使用、修改和共享,必须将数据以文件的形式存储到外部存储介质或云盘中。按文件中数据的组织形式可以把文件分文本文件和二进制文本。 1.文本文件    文本文件存储的是常规字符...
  • pjzxweb
  • pjzxweb
  • 2016年11月17日 11:03
  • 146

Python学习笔记 —— 文件操作

掌握点: 打印屏幕 读取键盘输入 读取&写入文件 文件目录其他操作 打印屏幕 print方法,可以使用逗号(,)打印多个值 如: print '总数量',totalL...
  • linfengwenyou
  • linfengwenyou
  • 2016年06月14日 10:48
  • 379

c语言学习笔记之文件操作

1、static 和 extern使用 1)修饰局部变量 static修饰局部变量特点:延长局部变量的生命周期 extern不能修饰局部变量 2)修饰全局变量 ...
  • qq_26992079
  • qq_26992079
  • 2015年10月02日 13:35
  • 229

C语言中文件操作笔记

C语言中文件操作笔记
  • u011028771
  • u011028771
  • 2016年09月16日 21:35
  • 332

单例模式使用 Quartz.Net执行定时任务

public sealed class QuartzHelper     {         private static QuartzHelper instance = null;      ...
  • hzy19860111
  • hzy19860111
  • 2013年10月16日 23:26
  • 2066

文件操作学习笔记(一):基本概念与简单函数

一、文件的基本概念:1、设备文件(广义的文件)分类:计算机硬件设备大体可分为字符设备、块设备、网络设备三类。(1)、字符设备: 是指在I/O传输过程中,以字符为单位进行传输的设备。(例如:键盘、打印...
  • Apollon_krj
  • Apollon_krj
  • 2016年10月20日 12:47
  • 610

Linux文件操作例子

1. 读文件的代码 int main(int arg, char *args[]) { if (arg return 0; int fd = open(args[1], O_RDONLY)...
  • zangyongcan
  • zangyongcan
  • 2016年07月16日 11:11
  • 194

2种基于简单定时任务实现分布式定时任务的技术解决方案(zookeeper、redis和内联MQ)

最近项目中,需要实现分布式的定时任务,结合现有的中间件和技术,设计出了2种简单分布式定时任务的实现(这里的前提是定时任务是可拆分的) 需求背景:由于DB需要通过定时任务执行数据清理,每天需要清理N个分...
  • aa6408323
  • aa6408323
  • 2017年01月14日 21:27
  • 2164

Linux下文件操作的基本函数及分析

1.概述所有执行I/O操作的系统调用都以文件描述符,一个非负整数,来指代打开的文件。文件描述符用来表示所有以打开的文件类型按照惯例,大多数的程序都会期望3种文件描述符 文件描述符 用途 st...
  • Shreck66
  • Shreck66
  • 2015年07月22日 15:08
  • 844
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux零碎笔记文件操作、定时任务等
举报原因:
原因补充:

(最多只允许输入30个字)