linux笔记-034-日常运维-linux任务计划cron,chkconfig工具,systemd管理服务,unit和target

时间:2022-06-21 14:03:04

crontab任务计划

建议设置任务计划的时候做一个追加日志的操作,便于以后排查

启动服务:

[root@am-01:~#] systemctl start crond

[root@am-01:~#] ps -aux | grep crond

root        740  0.0  0.1 126372  1724 ?        Ss   1月07   0:09 /usr/sbin/crond -n

root      30970  0.0  0.0 112672   980 pts/0    S+   00:25   0:00 grep --color=auto crond

 

配置文件:/etc/crontab

格式:分 user command

分范围0-59,时范围0-23,日范围1-31,月范围1-12,周1-7

[root@am-01:~#] 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

 

每天凌晨3:00执行一个脚本,并把正确的运行信息和错误的运行信息追加到指定文件

[root@am-01:~#] crontab -e

0 3 * * * /bin/bash /tmp/1.sh >>/tmp/1.log 2>> /tmp/1.log

 

可用格式1-5表示一个范围15

可用格式1,2,3表示1或者2或者3

可用格式*/2表示被2整除的数字,比如小时,那就是每隔2小时

每两个月的1-10号的周二和周五的凌晨3:00执行一个脚本,并把正确的运行信息和错误的运行信息追加到指定文件

[root@am-01:~#] crontab -e

0 3 1-10 */2 2,5 /bin/bash /tmp/1.sh >>/tmp/1.log 2>> /tmp/1.log

 

列出crontab的计划以及备份

备份:crontab的计划会生成以当前登录用户命名的文件,在/var/spool/cron/目录下,备份只需要备份对应用户的文件即可

[root@am-01:~#] crontab -e

no crontab for root - using an empty one

crontab: installing new crontab

[root@am-01:~#] crontab -l

0 3 1-10 */2 2,5 /bin/bash /tmp/1.sh >>/tmp/1.log 2>> /tmp/1.log

[root@am-01:~#] cat /var/spool/cron/root

0 3 1-10 */2 2,5 /bin/bash /tmp/1.sh >>/tmp/1.log 2>> /tmp/1.log

 

删除任务计划

[root@am-01:~#] crontab -r

[root@am-01:~#] crontab -l

no crontab for root

 

使用-u指定一个用户

[root@am-01:~#] crontab -u root -l

no crontab for root

[root@am-01:~#] crontab -u user1 -l

no crontab for user1

 

linux系统服务管理-chkconfig

主要在CentOS-7之前的版本使用

运行级别详解:

运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆

运行级别2:多用户状态(没有NFS)

运行级别3:完全的多用户状态(NFS),登陆后进入控制台命令行模式

运行级别4:系统未使用,保留

运行级别5X11控制台,登陆后进入图形GUI模式

运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

 

列出当前系统在使用chkconfig的服务,服务在/etc/init.d/目录下

[root@am-01:~#] chkconfig --list

 

注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。

      如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。

      欲查看对特定 target 启用的服务请执行

      'systemctl list-dependencies [target]'。

 

netconsole      0:关 1:关 2:关 3:关 4:关 5:关 6:关

network         0:关 1:关 2:开 3:开 4:开 5:开 6:关

[root@am-01:~#] ls /etc/init.d/

functions  netconsole  network  README

 

关闭和开启某服务

[root@am-01:~#] chkconfig network off

[root@am-01:~#] chkconfig --list

 

注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。

      如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。

      欲查看对特定 target 启用的服务请执行

      'systemctl list-dependencies [target]'。

 

netconsole      0:关 1:关 2:关 3:关 4:关 5:关 6:关

network         0:关 1:关 2:关 3:关 4:关 5:关 6:关

[root@am-01:~#] chkconfig network on

[root@am-01:~#] chkconfig --list

 

注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。

      如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。

      欲查看对特定 target 启用的服务请执行

      'systemctl list-dependencies [target]'。

 

netconsole      0:关 1:关 2:关 3:关 4:关 5:关 6:关

network         0:关 1:关 2:开 3:开 4:开 5:开 6:关

 

指定关闭或开启某个服务的某个或多个级别

[root@am-01:~#] chkconfig --level 3 network off

[root@am-01:~#] chkconfig --list

 

注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。

      如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。

      欲查看对特定 target 启用的服务请执行

      'systemctl list-dependencies [target]'。

 

netconsole      0:关 1:关 2:关 3:关 4:关 5:关 6:关

network         0:关 1:关 2:开 3:关 4:开 5:开 6:关

[root@am-01:~#] chkconfig --level 35 network off

[root@am-01:~#] chkconfig --list

 

注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。

      如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。

      欲查看对特定 target 启用的服务请执行

      'systemctl list-dependencies [target]'。

 

netconsole      0:关 1:关 2:关 3:关 4:关 5:关 6:关

network         0:关 1:关 2:开 3:关 4:开 5:关 6:关

[root@am-01:~#] chkconfig --level 345 network on

[root@am-01:~#] chkconfig --list

 

注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。

      如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。

      欲查看对特定 target 启用的服务请执行

      'systemctl list-dependencies [target]'。

 

netconsole      0:关 1:关 2:关 3:关 4:关 5:关 6:关

network         0:关 1:关 2:开 3:开 4:开 5:开 6:关

 

把某个服务加入到服务列表中去,首先把服务的启动脚本放到/etc/init.d/,然后使用--add把服务添加到服务列表

[root@am-01:~#] cd /etc/init.d/

[root@am-01:/etc/init.d#] cp network 123

[root@am-01:/etc/init.d#] ls

123  functions  netconsole  network  README

[root@am-01:/etc/init.d#] chkconfig --add 123

[root@am-01:/etc/init.d#] chkconfig --list

 

注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。

      如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。

      欲查看对特定 target 启用的服务请执行

      'systemctl list-dependencies [target]'123             0:关 1:关 2:开 3:开 4:开 5:开 6:关

netconsole      0:关 1:关 2:关 3:关 4:关 5:关 6:关

network         0:关 1:关 2:开 3:开 4:开 5:开 6:关

 

脚本文件解析:

以下这几部分内容必须存在,要不然无法识别

#! /bin/bash

# chkconfig: 2345 10 90

# description: Activates/Deactivates all network interfaces configured to \

#              start at boot time.

 

把某个服务从服务列表中删除

[root@am-01:/etc/init.d#] chkconfig --del 123

[root@am-01:/etc/init.d#] chkconfig --list

 

注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。

      如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。

      欲查看对特定 target 启用的服务请执行

      'systemctl list-dependencies [target]'。

 

netconsole      0:关 1:关 2:关 3:关 4:关 5:关 6:关

network         0:关 1:关 2:开 3:开 4:开 5:开 6:关

 

linux系统服务管理-systemd

列出服务列表及其描述信息

[root@am-01:~#] systemctl list-units --all --type=service

 

设置某服务开机启动及开机不启动,事实上就是创建或删除该服务的软链接

[root@am-01:~#] systemctl enable crond

[root@am-01:~#] systemctl disable crond

rm '/etc/systemd/system/multi-user.target.wants/crond.service'

 

查看某服务的状态

[root@am-01:~#] systemctl status crond.service

crond.service - Command Scheduler

   Loaded: loaded (/usr/lib/systemd/system/crond.service; disabled)

   Active: active (running) since 日 2018-01-07 06:22:19 CST; 2 weeks 2 days ago

 Main PID: 740 (crond)

   CGroup: /system.slice/crond.service

           └─740 /usr/sbin/crond -n

 

1月 07 06:22:19 aming-01 systemd[1]: Started Command Scheduler.

1月 07 06:22:19 aming-01 crond[740]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 83% if used.)

1月 07 06:22:19 aming-01 crond[740]: (CRON) bad username (/etc/crontab)

1月 07 06:22:20 aming-01 crond[740]: (CRON) INFO (running with inotify support)

1月 24 00:25:06 am-01 systemd[1]: Started Command Scheduler.

 

停止,启动,重启某服务

[root@am-01:~#] systemctl stop crond

[root@am-01:~#] systemctl start crond

[root@am-01:~#] systemctl restart crond

 

检查服务是否开机启动

[root@am-01:~#] systemctl is-enabled crond

enabled

 

unit介绍

target由众多的unit组成

ls /usr/lib/systemd/system //系统所有unit,分为以下类型

service 系统服务

target 多个unit组成的组

device 硬件设备

mount 文件系统挂载点

automount 自动挂载点

path 文件或路径

scope 不是由systemd启动的外部进程

slice 进程组

snapshot systemd快照

socket 进程间通信套接字

swap  swap文件

timer 定时器

 

CentOS-7也有类似之前版本里面的运行级别的概念,即target

[root@am-01:/usr/lib/systemd/system#] ll runlevel*

lrwxrwxrwx. 1 root root 15 12月  5 00:05 runlevel0.target -> poweroff.target

lrwxrwxrwx. 1 root root 13 12月  5 00:05 runlevel1.target -> rescue.target

lrwxrwxrwx. 1 root root 17 12月  5 00:05 runlevel2.target -> multi-user.target

lrwxrwxrwx. 1 root root 17 12月  5 00:05 runlevel3.target -> multi-user.target

lrwxrwxrwx. 1 root root 17 12月  5 00:05 runlevel4.target -> multi-user.target

lrwxrwxrwx. 1 root root 16 12月  5 00:05 runlevel5.target -> graphical.target

lrwxrwxrwx. 1 root root 13 12月  5 00:05 runlevel6.target -> reboot.target

 

unit相关的命令

列出正在运行的unit

[root@am-01:~#] systemctl list-units

 

列出所有,包括失败的或者inactiveunit

[root@am-01:~#] systemctl list-units --all

 

列出inactiveunit

[root@am-01:~#] systemctl list-units --all --state=inactive

 

列出状态为activeservice

[root@am-01:~#] systemctl list-units --type=service

 

查看某个服务是否为active

[root@am-01:~#] systemctl is-active crond.service

active

 

target介绍

系统为了方便管理用target来管理unittarget下面也可以继续有target

列出系统所有的target

[root@am-01:~#] systemctl list-unit-files --type=target

 

查看某个target下面都有哪些unit

[root@am-01:~#] systemctl list-dependencies multi-user.target

 

查看系统默认的target

[root@am-01:~#] systemctl get-default

multi-user.target

 

设置默认的target

[root@am-01:~#] systemctl set-default multi-user.target

rm '/etc/systemd/system/default.target'

ln -s '/usr/lib/systemd/system/multi-user.target' '/etc/systemd/system/default.target'

[root@am-01:~#] ll /etc/systemd/system/default.target

lrwxrwxrwx. 1 root root 41 1月  24 06:05 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target

 

总结:

一个service属于一种类型的unit

多个unit组成了一个target

一个target里面包含了多个service

 

查看某个服务属于哪个target

[root@am-01:~#] cat /usr/lib/systemd/system/sshd.service

[Unit]

Description=OpenSSH server daemon

After=network.target sshd-keygen.service

Wants=sshd-keygen.service

 

[Service]

EnvironmentFile=/etc/sysconfig/sshd

ExecStart=/usr/sbin/sshd -D $OPTIONS

ExecReload=/bin/kill -HUP $MAINPID

KillMode=process

Restart=on-failure

RestartSec=42s

 

[Install]

WantedBy=multi-user.target

 

扩展

anacron

http://blog.csdn.net/strikers1982/article/details/4787226

xinetd(默认机器没有安装这个服务,需要yum install xinetd安装)   

http://blog.sina.com.cn/s/blog_465bbe6b010000vi.html

systemd自定义启动脚本:

http://www.jb51.net/article/100457.htm