2017-08-08 每天2个Linux命令 crontab命令
crontab命令被用来提交和管理用户需要周期性执行的任务,与windows下的计划任务类似。
(1)用法:
用法: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(2)功能:
功能: 当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,
如果有要执行的任务,则自动执行该任务。
在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。
这个命令非常设合周期性的日志分析或数据备份等工作。
(3)选项参数:
1) -l 列出当前计时器的设置,查看定时运行的程序
2) -e 编辑该用户的计时器设置,设置计时器
3) -r 删除该用户的计时器设置
4) -u<用户名称> 指定要设定计时器的用户名称
(4)实例:(此命令用的不常,在此简要介绍)
1)每1分钟执行一次command
* * * * * command
2)每五分钟执行一次命令
*/5 * * * * command
3)在每天的17:00执行这个命令
00 17 * * * command
4)在8:02,11:02,14:02,17:02,20:02 执行,在8点到20点的时间内,每三个小时执行一下命令
2 8-20/3 * * * command
以后会讨论crondtab的几个用法:
*创建一个新的crontab文件:
1.进入 /var/spool/cron目录下(目录为空表明当前系统内没有任何Linux计划任务需要执行)
[root@localhost /]# cd /var/spool/cron
[root@localhost cron]# ll
总用量 0
*列出crontab文件:
2.用crontab自带的命令crontab -l 发现也是没有任何东西()
[root@localhost cron]# crontab -l
no crontab for root
*编辑crontab文件;
3.如果目录已经存在指定的文件(文件名为当前用户名),则crontab -e 命令编辑它,否则创建新的文件。
cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次 /etc/crontab,
因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。
*/2 * * * * ls -l /home/sunjimeng/Documents > root.txt
* * * * * echo "I am MenAngel" > root.txt
*删除crontab文件;
恢复丢失的crontab文件;
(5)其他:
1.什么是Windows的计划任务?
在Windows中,系统有一项重要的“计划任务”功能,通过设置“计划任务”,你可以将每天或某一天的某个时间需要做的事拟成计划,
到约定的时间,不管你在电脑上进行什么工作,系统都会提醒你或者启动你设定好的任务程序。
2.crontab的简介:
crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,
并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。
常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。
3.crontab文件:
crontab文件包含送交cron守护进程的一系列作业和指令。每个用户可以拥有自己的crontab文件;
同时,操作系统保存一个针对整个系统的crontab文件,该文件通常存放于/etc或者/etc之下的子目录中,
而这个文件只能由系统管理员来修改。crontab文件的每一行均遵守特定的格式,由空格或tab分隔为数个领域,
每个领域可以放置单一或多个数值。
4.Linux下的任务调度
Linux下的任务调度分为两类:系统任务调度和用户任务调度。
系统任务调度: 系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,
这个就是系统任务调度的配置文件:
[root@localhost /]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# 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
复制代码
前三行是用来配置crond任务运行的环境变量。第一行SHELL变量指定了系统要使用哪个shell,这里是bash;
第二行PATH变量指定了系统执行命令的路径;第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,
如果MAILTO变量的值为空,则表示不发送任务执行信息给用户。
*: 表示任何时刻
,: 表示分割
-:表示一个段,如第二端里: 1-5,就表示1到5点
/n : 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.
用户任务调度: 用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。
所有用户定义的crontab文件都被保存在/var/spool/cron目录中。其文件名与用户名一致。
[root@localhost /]# cd /var/spool/cron
[root@localhost cron]# ll
总用量 0
/etc/cron.deny 该文件中所列用户不允许使用crontab命令
/etc/cron.allow 该文件中所列用户允许使用crontab命令
/var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名
5.crond服务
1)安装crontab:
yum install crontabs
服务操作说明:
复制代码
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
复制代码
查看crontab服务状态: service crond status
复制代码
[root@localhost sunjimeng]# service crond status
Redirecting to /bin/systemctl status crond.service
crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled)
Active: active (running) since 五 2016-05-27 23:11:47 PDT; 1 weeks 5 days ago
Main PID: 1303 (crond)
CGroup: /system.slice/crond.service
└─1303 /usr/sbin/crond -n
5月 27 23:11:47 localhost.localdomain systemd[1]: Started Command Scheduler.
5月 27 23:11:47 localhost.localdomain crond[1303]: (CRON) INFO (RANDOM_DELAY...
5月 27 23:11:48 localhost.localdomain crond[1303]: (CRON) INFO (running with...
Hint: Some lines were ellipsized, use -l to show in full.
复制代码
手动启动crontab服务: service crond start
[root@localhost sunjimeng]# service crond start
Redirecting to /bin/systemctl start crond.service
查看crontab服务是否已设置为开机启动,执行命令: ntsysv
[root@localhost sunjimeng]# ntsysv
加入开机自动启动: chkconfig –level 35 crond on(以后再介绍)
*要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start即可。
2017-08-08 每天2个Linux命令 lsof命令
lsof命令用于查看你进程打开的文件,端口(TCP、UDP),找回/恢复删除的文件,打开文件的进程。
(1)用法:
用法: lsof [参数] [文件]
(2)功能:
功能: lsof 命令可显示系统打开的文件.(因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。)
在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。
所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,
无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。
因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,
因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
(3)选项参数:
1) +D<目录> 递归列出目录下被打开的文件
2) -u s 列出login name或UID为 s的程序
3) -c<进程名> 列出指定进程所打开的文件
4) -i<条件> 列出符合条件的进程。(4、6、协议、:端口、 @ip )
5) -n -n<目录> 列出使用NFS的文件
(4)实例:
1)[sunjimeng@localhost ~]$ lsof |more -20 无任何参数,显示当前系统已经打开的正在使用的所有文件
复制代码
[sunjimeng@localhost ~]$ lsof |more -20
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
进程名称 标志符 线程id 所有者 文件描述符 文件类型 磁盘名称 文件大小 索引节点 文件名称
systemd 1 root cwd unknown /proc/1/cwd (readlink: Permission denied)
systemd 1 root rtd unknown /proc/1/root (readlink: Permission denied)
systemd 1 root txt unknown /proc/1/exe (readlink: Permission denied)
systemd 1 root NOFD /proc/1/fd (opendir: Permission denied)
kthreadd 2 root cwd unknown /proc/2/cwd (readlink: Permission denied)
kthreadd 2 root rtd unknown /proc/2/root (readlink: Permission denied)
kthreadd 2 root txt unknown /proc/2/exe (readlink: Permission denied)
kthreadd 2 root NOFD /proc/2/fd (opendir: Permission denied)
ksoftirqd 3 root cwd unknown /proc/3/cwd (readlink: Permission denied)
ksoftirqd 3 root rtd unknown /proc/3/root (readlink: Permission denied)
ksoftirqd 3 root txt unknown /proc/3/exe (readlink: Permission denied)
ksoftirqd 3 root NOFD /proc/3/fd (opendir: Permission denied)
kworker/0 5 root cwd unknown /proc/5/cwd (readlink: Permission denied)
kworker/0 5 root rtd unknown /proc/5/root (readlink: Permission denied)
kworker/0 5 root txt unknown /proc/5/exe (readlink: Permission denied)
kworker/0 5 root NOFD /proc/5/fd (opendir: Permission denied)
migration 7 root cwd unknown /proc/7/cwd (readlink: Permission denied)
migration 7 root rtd unknown /proc/7/root (readlink: Permission denied) //是根目录到软连接
migration 7 root txt unknown /proc/7/exe (readlink: Permission denied)
--More--
复制代码
FW的详解:
1)cwd(current work dirctory): 应用程序的当前工作目录,应用程序启动的目录,除非它本身对这个目录进行更改。
2)txt: 该类型的文件是程序代码,如应用程序二进制文件本身或共享库
3)rtd: root directory
4)0: 表示标准输出
5)1: 表示标准输入
6)2: 表示标准错误
TYPE:文件类型,如DIR、REG等,常见的文件类型:
(1)DIR:表示目录
(2)CHR:表示字符类型
(3)BLK:块设备类型
(4)UNIX: UNIX 域套接字
(5)FIFO:先进先出 (FIFO) 队列
(6)IPv4:网际协议 (IP) 套接字
DEVICE:指定磁盘的名称
SIZE: 文件的大小
NODE: 索引节点(文件在磁盘上的标识)
NAME: 打开文件的确切名称
2)[root@localhost root]# lsof /bin/bash 查看与指定文件相关的进程的信息,即找出使用此文件的进程
复制代码
[root@localhost root]# lsof /bin/bash
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ksmtuned 807 root txt REG 8,3 960384 34340720 /usr/bin/bash
bash 35234 sunjimeng txt REG 8,3 960384 34340720 /usr/bin/bash
bash 38651 root txt REG 8,3 960384 34340720 /usr/bin/bash
3)[root@localhost /]# lsof +D /home/sunjimeng/.local/share 递归查看某个目录的文件信息
复制代码
[root@localhost /]# lsof +D /home/sunjimeng/.local/share
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nautilus 3387 sunjimeng mem REG 8,3 32768 71239928 /home/sunjimeng/.local/share/gvfs-metadata/home-ddf07f21.log
nautilus 3387 sunjimeng mem REG 8,3 764 71239927 /home/sunjimeng/.local/share/gvfs-metadata/home
nautilus 3387 sunjimeng 15r REG 8,3 764 71239927 /home/sunjimeng/.local/share/gvfs-metadata/home
nautilus 3387 sunjimeng 16r REG 8,3 32768 71239928 /home/sunjimeng/.local/share/gvfs-metadata/home-ddf07f21.log
evolution 3426 sunjimeng 11u REG 8,3 14336 104003229 /home/sunjimeng/.local/share/evolution/addressbook/system/contacts.db
tracker-s 3447 sunjimeng 15w REG 8,3 210635 71234252 /home/sunjimeng/.local/share/tracker/data/
4)[root@localhost dir1]# lsof |grep ‘/home/sunjimeng/Document/dir1’ 不用+D参数得到与某个文件有关的进程信息的方法
复制代码
[root@localhost dir1]# lsof +D /home/sunjimeng/Document/dir1
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 38651 root cwd DIR 8,3 30 36004773 /home/sunjimeng/Document/dir1
lsof 41562 root cwd DIR 8,3 30 36004773 /home/sunjimeng/Document/dir1
lsof 41563 root cwd DIR 8,3 30 36004773 /home/sunjimeng/Document/dir1
[root@localhost dir1]# lsof |grep '/home/sunjimeng/Document/dir1'
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
bash 38651 root cwd DIR 8,3 30 36004773 /home/sunjimeng/Document/dir1
lsof 41628 root cwd DIR 8,3 30 36004773 /home/sunjimeng/Document/dir1
grep 41629 root cwd DIR 8,3 30 36004773 /home/sunjimeng/Document/dir1
lsof 41630 root cwd DIR 8,3 30 36004773 /home/sunjimeng/Document/dir1tracker-store.journal
5)[root@localhost /]# lsof -u sunjimeng |more -20 列出某个用户打开的所有文件相关的进程信息
复制代码
[root@localhost /]# lsof -u sunjimeng |more -20
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
gnome-key 2967 sunjimeng cwd DIR 8,3 6 71227180 /var/gdm
gnome-key 2967 sunjimeng rtd DIR 8,3 4096 128 /
gnome-key 2967 sunjimeng txt REG 8,3 1038688 35649707 /usr/bin/gnome-keyring-daemon
gnome-key 2967 sunjimeng mem REG 8,3 50496 68402049 /usr/lib64/gio/modules/libdconfsettings.so
gnome-key 2967 sunjimeng mem REG 8,3 106065056 34340715 /usr/lib/locale/locale-archive
gnome-key 2967 sunjimeng mem REG 8,3 153184 67393930 /usr/lib64/liblzma.so.5.0.99
gnome-key 2967 sunjimeng mem REG 8,3 398272 67393933 /usr/lib64/libpcre.so.1.2.0
gnome-key 2967 sunjimeng mem REG 8,3 44088 67328582 /usr/lib64/librt-2.17.so
gnome-key 2967 sunjimeng mem REG 8,3 110808 67328580 /usr/lib64/libresolv-2.17.so
gnome-key 2967 sunjimeng mem REG 8,3 147120 67393944 /usr/lib64/libselinux.so.1
gnome-key 2967 sunjimeng mem REG 8,3 90632 67393947 /usr/lib64/libz.so.1.2.7
gnome-key 2967 sunjimeng mem REG 8,3 32296 67394691 /usr/lib64/libffi.so.6.0.1
gnome-key 2967 sunjimeng mem REG 8,3 15616 67394699 /usr/lib64/libgmodule-2.0.so.0.4000.0
gnome-key 2967 sunjimeng mem REG 8,3 2107760 67328552 /usr/lib64/libc-2.17.so
gnome-key 2967 sunjimeng mem REG 8,3 141616 67328578 /usr/lib64/libpthread-2.17.so
gnome-key 2967 sunjimeng mem REG 8,3 19736 67394316 /usr/lib64/libcap-ng.so.0.0.0
gnome-key 2967 sunjimeng mem REG 8,3 19384 67394141 /usr/lib64/libgpg-error.so.0.10.0
gnome-key 2967 sunjimeng mem REG 8,3 19512 67328558 /usr/lib64/libdl-2.17.so
gnome-key 2967 sunjimeng mem REG 8,3 534488 67394280 /usr/lib64/libgcrypt.so.11.8.2
--More--
6)[root@localhost /]# lsof -c sleep 列出与程序有关的文件
复制代码
[root@localhost /]# lsof -c sleep
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sleep 42253 root cwd DIR 8,3 4096 128 /
sleep 42253 root rtd DIR 8,3 4096 128 /
sleep 42253 root txt REG 8,3 33088 34268435 /usr/bin/sleep
sleep 42253 root mem REG 8,3 106065056 34340715 /usr/lib/locale/locale-archive
sleep 42253 root mem REG 8,3 2107760 67328552 /usr/lib64/libc-2.17.so
sleep 42253 root mem REG 8,3 164336 67328545 /usr/lib64/ld-2.17.so
sleep 42253 root 0r CHR 1,3 0t0 1045 /dev/null
sleep 42253 root 1u unix 0xffff880080995a00 0t0 18112 socket
sleep 42253 root 2u unix 0xffff880080995a00 0t0 18112 socket
复制代码
复制代码
[root@localhost /]# lsof |grep sleep //等价
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
sleep 42993 root cwd DIR 8,3 4096 128 /
sleep 42993 root rtd DIR 8,3 4096 128 /
sleep 42993 root txt REG 8,3 33088 34268435 /usr/bin/sleep
sleep 42993 root mem REG 8,3 106065056 34340715 /usr/lib/locale/locale-archive
sleep 42993 root mem REG 8,3 2107760 67328552 /usr/lib64/libc-2.17.so
sleep 42993 root mem REG 8,3 164336 67328545 /usr/lib64/ld-2.17.so
sleep 42993 root 0r CHR 1,3 0t0 1045 /dev/null
sleep 42993 root 1u unix 0xffff880080995a00 0t0 18112 socket
sleep 42993 root 2u unix 0xffff880080995a00 0t0 18112 socket
7)[root@localhost /]# lsof -i 列出所有的网络连接
复制代码
[root@localhost /]# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
chronyd 787 chrony 1u IPv4 16222 0t0 UDP *:ntp
chronyd 787 chrony 2u IPv6 16223 0t0 UDP *:ntp
chronyd 787 chrony 3u IPv4 16224 0t0 UDP localhost:323
chronyd 787 chrony 5u IPv6 16225 0t0 UDP localhost:323
avahi-dae 790 avahi 12u IPv4 17290 0t0 UDP *:mdns
avahi-dae 790 avahi 13u IPv4 17291 0t0 UDP *:44093
sshd 1282 root 3u IPv4 20803 0t0 TCP *:ssh (LISTEN)
sshd 1282 root 4u IPv6 20805 0t0 TCP *:ssh (LISTEN)
master 2527 root 13u IPv4 22473 0t0 TCP localhost:smtp (LISTEN)
master 2527 root 14u IPv6 22474 0t0 TCP localhost:smtp (LISTEN)
cupsd 3269 root 11u IPv6 27563 0t0 TCP localhost:ipp (LISTEN)
cupsd 3269 root 12u IPv4 27564 0t0 TCP localhost:ipp (LISTEN)
列出使用指定协议的网络连接:
复制代码
[root@localhost /]# lsof -i TCP
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1282 root 3u IPv4 20803 0t0 TCP *:ssh (LISTEN)
sshd 1282 root 4u IPv6 20805 0t0 TCP *:ssh (LISTEN)
master 2527 root 13u IPv4 22473 0t0 TCP localhost:smtp (LISTEN)
master 2527 root 14u IPv6 22474 0t0 TCP localhost:smtp (LISTEN)
cupsd 3269 root 11u IPv6 27563 0t0 TCP localhost:ipp (LISTEN)
cupsd 3269 root 12u IPv4 27564 0t0 TCP localhost:ipp (LISTEN)
8)[root@localhost /]# lsof -n /home/sunjimeng 列出指定目录下使用NFS文件系统的所有文件
复制代码
[root@localhost /]# lsof -n /home/sunjimeng
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
gnome-ses 2990 sunjimeng cwd DIR 8,3 4096 137 /home/sunjimeng
gnome-set 3168 sunjimeng cwd DIR 8,3 4096 137 /home/sunjimeng
gnome-she 3265 sunjimeng cwd DIR 8,3 4096 137 /home/sunjimeng
gsd-print 3282 sunjimeng cwd DIR 8,3 4096 137 /home/sunjimeng
nautilus 3387 sunjimeng cwd DIR 8,3 4096 137 /home/sunjimeng
vmtoolsd 3435 sunjimeng cwd DIR 8,3 4096 137 /home/sunjimeng
tracker-m 3442 sunjimeng cwd DIR 8,3 4096 137 /home/sunjimeng
tracker-s 3447 sunjimeng cwd DIR 8,3 4096 137 /home/sunjimeng
abrt-appl 3450 sunjimeng cwd DIR 8,3 4096 137 /home/sunjimeng
top 15226 sunjimeng cwd DIR 8,3 4096 137 /home/sunjimeng
gnome-ter 35226 sunjimeng cwd DIR 8,3 4096 137 /home/sunjimeng
(5)其他:
lsof可以打开的文件的类型:
1.普通文件
2.目录
3.网络文件系统的文件
4.字符或设备文件
5.(函数)共享库
6.管道,命名管道
7.符号链接
8.网络文件(例如:NFS file、网络socket,unix域名socket)
9.还有其它类型的文件,等等。