第1章 软件查询

1.1 查询软件是否安装

rpm -qa |grep cron 查询是否安装了这个软件.

  1. [root@znix ~]# rpm -qa |grep cron
  2. crontabs-1.10-33.el6.noarch
  3. cronie-1.4.4-16.el6_8.2.x86_64
  4. cronie-anacron-1.4.4-16.el6_8.2.x86_64
  5. [root@znix ~]#

1.2 查看查询是否正在运行

  1. [root@znix ~]# ps -ef |grep crond
  2. root 1570 1 0 Sep02 ? 00:00:00 crond
  3. root 14941 14780 0 09:08 pts/0 00:00:00 grep --color=auto crond

1.3 安装crond的方法

1.3.1 crond属于哪里

crond,不能单独安装,是软件包里所带的功能。
yum安装的时候需要需要安装,

  1. [root@znix ~]# yum install crond
  2. Loaded plugins: fastestmirror, security
  3. Setting up Install Process
  4. Loading mirror speeds from cached hostfile
  5. * base: mirrors.btte.net
  6. * extras: mirrors.btte.net
  7. * updates: mirrors.sohu.com
  8. base | 3.7 kB 00:00
  9. extras | 3.4 kB 00:00
  10. updates | 3.4 kB 00:00
  11. No package crond available.
  12. Error: Nothing to do

1.3.2 查询软件所属软件包

  1. [root@znix ~]# rpm -qf `which crond`
  2. cronie-1.4.4-16.el6_8.2.x86_64

1.3.3 如何查看软件包里的内容

rpm -ql 显示软件包里的信息。名字必须一致.

  1. [root@znix ~]# rpm -ql cronie
  2. /etc/cron.d
  3. /etc/cron.d/0hourly
  4. /etc/cron.deny
  5. /etc/pam.d/crond
  6. /etc/rc.d/init.d/crond
  7. /etc/sysconfig/crond
  8. /usr/bin/crontab
  9. /usr/sbin/crond
  10. /usr/share/doc/cronie-1.4.4
  11. /usr/share/doc/cronie-1.4.4/AUTHORS
  12. /usr/share/doc/cronie-1.4.4/COPYING
  13. /usr/share/doc/cronie-1.4.4/ChangeLog
  14. /usr/share/doc/cronie-1.4.4/INSTALL
  15. /usr/share/doc/cronie-1.4.4/README
  16. /usr/share/man/man1/crontab.1.gz
  17. /usr/share/man/man5/crontab.5.gz
  18. /usr/share/man/man8/cron.8.gz
  19. /usr/share/man/man8/crond.8.gz
  20. /var/spool/cron

1.3.4 如何查看一个安装的软件

rpm 如何查询软件包的内容
yum 安装不上的,可能是软件包的一部分
查看 crond 属于哪个软件包,查询时要使用绝对路径

1.4 查询ifconfig 属于哪个软件包

  1. [root@znix ~]#
  2. [root@znix ~]# rpm -qf `which ifconfig`
  3. net-tools-1.60-114.el6.x86_64
  4. [root@znix ~]# rpm -ql net-tools
  5. /bin/dnsdomainname
  6. /bin/domainname

第2章 定时任务

2.1 什么是定时任务

每隔相同的时间,相同的事情(执行命令或脚本)。

2.2 系统中的定时任务

  1. [root@znix ~]# ls -ld /etc/cron*
  2. drwxr-xr-x. 2 root root 4096 Aug 10 18:37 /etc/cron.d
  3. drwxr-xr-x. 2 root root 4096 Aug 10 18:38 /etc/cron.daily
  4. -rw-------. 1 root root 0 Aug 24 2016 /etc/cron.deny
  5. drwxr-xr-x. 2 root root 4096 Aug 10 18:36 /etc/cron.hourly
  6. drwxr-xr-x. 2 root root 4096 Aug 10 18:37 /etc/cron.monthly
  7. -rw-r--r--. 1 root root 457 Sep 27 2011 /etc/crontab
  8. drwxr-xr-x. 2 root root 4096 Sep 27 2011 /etc/cron.weekly

/etc/cron.deny 禁止用户使用定时任务 ,把用户名放到里面

2.2.1 日志切割-日志的轮询

每隔一段时间,将日志进行分割

  1. [root@znix ~]# ls /var/log/messages*
  2. /var/log/messages /var/log/messages-20170828
  3. /var/log/messages-20170814 /var/log/messages-20170904
  4. /var/log/messages-20170821

2.2.2 日志的轮询的定时任务

  1. [root@znix cron.daily]# cat /etc/logrotate.d/syslog
  2. /var/log/cron
  3. /var/log/maillog
  4. /var/log/messages
  5. /var/log/secure
  6. /var/log/spooler
  7. {
  8. sharedscripts
  9. postrotate
  10. /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
  11. endscript
  12. }

2.3 用户定时任务crontab

2.3.1 crontab 使用

-e 编辑
-l 查看
-u 设置指定用户的定时任务

  1. [root@znix cron.daily]# crontab --help
  2. crontab: invalid option -- '-'
  3. crontab: usage error: unrecognized option
  4. usage: crontab [-u user] file
  5. crontab [-u user] [ -e | -l | -r ]
  6. (default operation is replace, per 1003.2)
  7. (edit user's crontab)
  8. (list user's crontab)
  9. -r (delete user's crontab)
  10. -i (prompt before deleting user's crontab)
  11. -s (selinux context)

2.3.2 指定用户的定时任务

-u 指定用户

  1. [root@znix ~]# crontab -u clsn -l
  2. #clsn
  3. [root@znix ~]# ll /var/spool/cron/
  4. total 8
  5. -rw------- 1 root root 8 Sep 7 10:23 clsn
  6. -rw------- 1 root root 77 Sep 4 20:43 root

2.4 定时任务的使用-

2.4.1 看定时任务的软件的是否能用

  1. [root@znix ~]# ps -ef |grep cron
  2. root 1570 1 0 Sep02 ? 00:00:00 crond
  3. [root@znix ~]# service crond status
  4. crond (pid 1570) is running...
  5. [root@znix ~]# /etc/init.d/crond status
  6. crond (pid 1570) is running...

2.4.2 看定时任务是否开机自启动

  1. [root@znix ~]# chkconfig |grep cron
  2. crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off

2.4.3 linux里的守护进程 (服务)

  1. [root@znix ~]# chkconfig |egrep "crond|network|rsyslog|sshd|sysstat"
  2. crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off 定时任务
  3. network 0:off 1:off 2:on 3:on 4:on 5:on 6:off 网络服务
  4. rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off 系统日志
  5. sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off 远程链接服务器
  6. sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off 监测系统性能及效率

2.5 与定时任务相关的文件

2.5.1 定时任务的日志

  1. [root@znix ~]# tail -2 /var/log/cron
  2. Sep 7 10:23:42 znix crontab[15409]: (root) LIST (clsn)
  3. Sep 7 10:25:01 znix CROND[15412]: (root) CMD (/usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1)

2.5.2 定时任务所在目录

  1. [root@znix ~]# ls /var/spool/cron

2.5.3 禁止那些用户使用定时任务

  1. [root@znix ~]# cat /etc/cron.deny

2.6 linux中查看的命令日志

对与较大的文件,查看的时候,尽量不要cat.通过其他的命令,快速找到要找的内容.

  1. grep /egrep
  2. less
  3. tail /tail -f
  4. head

2.7 定时任务的基本格式

          • CMD
            分时日月周 CMD
            其中 * 表示每
            /n 每隔多长时间

            2.7.1 定时任务中的时间

            ```powershell [root@znix ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/

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

  1. <a name="auto-id-28"></a>
  2. ### 2.7.2 定时任务--每5分钟同步一下系统时间
  3. 1.用什么命令,首先将命令测试一下,没有错误后,再写入定时任务.
  4. ```powershell
  5. [root@znix ~]# ntpdate ntp1.aliyun.com
  6. 7 Sep 10:52:57 ntpdate[15460]: adjust time server 182.92.12.11 offset 0.479762 sec

2.写定时任务—写定时任务要使用绝对路径, 在后面加上2>&1,表示正确的,错误的都输出到同一个文件中.

  1. [root@znix ~]# crontab -e
  2. ###time tongbu
  3. */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1

3.检查结果,可以看日志,也可看命令的执行结果.

  1. [root@znix ~]# tail -1 /var/log/cron
  2. Sep 7 10:55:01 znix CROND[15466]: (root) CMD (/usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1)

实例2-1 每分钟把自己的名字 追加到 /clsn/clsn.txt

  1. * * * * * /bin/echo clsn >> /clsn/clsn.txt
  1. 使用tail命令查看命令的执行情况,可以看到文件的内容.
  1. [root@znix ~]# tail -f /clsn/clsn.txt
  2. clsn
  3. clsn
  4. clsn

查看日志,查看命令执行的时间.

  1. [root@znix ~]# tail -3 /var/log/cron
  2. Sep 7 12:05:01 znix CROND[15674]: (root) CMD (/bin/echo clsn >> /clsn/clsn.txt 2>&1)
  3. Sep 7 12:06:01 znix CROND[15678]: (root) CMD (/bin/echo clsn >> /clsn/clsn.txt 2>&1)
  4. Sep 7 12:07:01 znix CROND[15681]: (root) CMD (/bin/echo clsn >> /clsn/clsn.txt 2>&1)

2.8 注意

错误:

  1. * * * * * /bin/echo "clsn" >>/clsn/clsn.txt >/dev/null 2>&1

实例2-2 二者不可同时使用.
定时任务中 命令/脚本定向到空

  1. /dev/null 2>&1

定时任务中 命令/脚本追加到文件中

  1. /clsn/clsn.txt 2>&1