linux任务计划 chkconfig工具 systemd管理服务 unit介绍 target介绍

时间:2022-11-06 14:24:13

 linux任务计划 

任务计划:特定时间备份数据,重启服务,shell脚本,单独的命令等等。

任务计划配置文件:cat /etc/crontab

 

[root@centos7 ~]# 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

 

 

shell脚本,PATH环境变量,MAILTO发送邮件给谁

时间5个位置格式依次:

分钟,小时,几号,月份,星期;

 

user-name             command to be executed

用户(root可以省略)    最后是需要执行的命令。

 

crontab  -e 需要执行的任务计划。

每天凌晨3点执行的脚本

  0  3 * * * /bin/bash       /usr/local/sbin/123.sh  >>  /tmp/123.log   2>>/tmp/123.log

 

/usr/local/sbin/123.sh  >>  /tmp/123.log  正确输出追加

2>>/tmp/123.log  错误输出追加

 

 

 

1到10号的3点 双月能被2整除的月份,星期周2和周5,

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

 

 

没有年份:月份几号和星期确定年份的唯一性。

 

 

 

启动服务:

systemctl start crond

 

查看是否启动:

ps aux |grep cron

或者:

systemctl status crond

 

 

注意:

crontab -e编写脚本的时候:

直接写命令有可能没有在PATH里面定义,或者用绝对路径,例如iptables 可以写成绝对路径/usr/sbin/iptables或者加入到PATH里面;

此外还要添加一个错误日志用来查看执行信息。

 

 

 

crontab -e编辑一个计划任务

删除2月10点1分的大于100天的文件

1 10 * 2 * /usr/bin/find     /tmp/ -type f -mtime +100 |xargs rm -f

 

备份任务计划

crontab任务文件存储在 /var/spool/cron/username

这里面有对于用户的文件root,xiaobo用户等。

直接拷贝这个目录路径文件即可。

 

 

总结:

crontab -u 、-e 、-l 、-r

crontab -e编辑一个计划任务

crontab -l 查看当前添加的计划任务

crontab -r 删除当前计划任务

crontab -u 指定一个用户

 

 

格式: 分 时 日 月 周 user command

文件 /var/spool/cron/username

 

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

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

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

可用格式*/2表示被2整除的数字,比如小时,那就是每隔2小时要保证服务是启动状态

 

 

 

 

linux系统服务管理工具chkconfig

用来管理一些服务: network,mysql,httpd等等

 

Chkconfig   --list列出当前的服务

[root@centos7 ~]# 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:关

 

系统7个运行级别0~6

0级别 关机状态

1级别 单用户

2级别 多用户模式不带图形不带nfs服务

3级别 多用户模式不带图形

4级别 保留

5级别 多用户带图形

6级别 重启状态

服务启动脚本存储在:/etc/init.d/

[root@centos7 ~]# ls /etc/init.d/

functions  netconsole  network  README

 

关闭服务:systemctl network off

开启服务:systemctl network on

 

 

/etc/inittab 不再使用

 

 

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

指定3级别关闭

chkconfig  --level 3 network  off

指定345级别关闭

chkconfig  --level 345 network off

 

cd /etc/init.d/

自定义一个脚本 cp network 123

添加到服务

chkconfig  --add 123

删除服务

chkconfig  --del  123

 

 

 

systemd管理服务

 

查看所有的服务

[root@centos7 ~]# systemctl list-unit-files 

 

 

列出所有的服务service,包括描述信息

systemctl  list-units --all --type=service

 

 

几个常用的服务相关的命令

systemctl enable cond.service //让服务开机启动

systemctl enable crond (.service可以省略)

 

systemctl disable crond  //不让开启启动

 

[root@centos7 ~]# systemctl is-enabled crond.service 

enabled

[root@centos7 ~]# systemctl disable crond.service 

Removed symlink /etc/systemd/system/multi-user.target.wants/crond.service.

[root@centos7 ~]# systemctl is-enabled crond.service 

disabled

 

[root@centos7 ~]# systemctl enable crond.service 

Created symlink from /etc/systemd/system/multi-user.target.wants/crond.service to /usr/lib/systemd/system/crond.service.

 

Created symlink 创建软连接

 

 

生成软连接

[root@centos7 ~]# ls -l /etc/systemd/system/multi-user.target.wants/crond.service 

lrwxrwxrwx 1 root root 37 1月  27 12:45 /etc/systemd/system/multi-user.target.wants/crond.service -> /usr/lib/systemd/system/crond.service

 

disable 会把软连接remove

 

[root@centos7 ~]# systemctl disable crond.service 

Removed symlink /etc/systemd/system/multi-user.target.wants/crond.service.

 

 

systemctl status crond //查看状态

systemctl stop crond //停止服务

systemctl start crond //启动服务

systemctl restart crond //重启服务

 

systemctl is-enableed crond //检查服务是否开机启动

 

 

 

linux系统服务管理-systemd unit介绍

 

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

 

service系统服务

 

tartget 多个unit组成的组

 

[root@centos7 systemd]# cd /usr/lib/systemd/system

[root@centos7 system]# ls -l runlevel*

 

7个运行级别 target

lrwxrwxrwx. 1 root root 15 12月 19 05:49 runlevel0.target -> poweroff.target

lrwxrwxrwx. 1 root root 13 12月 19 05:49 runlevel1.target -> rescue.target

lrwxrwxrwx. 1 root root 17 12月 19 05:49 runlevel2.target -> multi-user.target

lrwxrwxrwx. 1 root root 17 12月 19 05:49 runlevel3.target -> multi-user.target

lrwxrwxrwx. 1 root root 17 12月 19 05:49 runlevel4.target -> multi-user.target

lrwxrwxrwx. 1 root root 16 12月 19 05:49 runlevel5.target -> graphical.target

lrwxrwxrwx. 1 root root 13 12月 19 05:49 runlevel6.target -> reboot.target

 

 

 

device硬件设备

mount 文件系统挂载点

automount 自动挂载点

path 文件或路径

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

slice进程组

snapshot systemd 快照

socket 进程间通信套接字

swap swap文件

timer 定时器

 

 

unit相关的命令

 

systemctl list-units   //列出正在运行的unit

 

 systemctl  list-units --all //列出所有,包括失败的或者inactive的

 

systemctl list-units --all --state=inactive //列出inactive的unit

 

systemctl list-unit --type=service //列出状态为active的service

 

systemctl is-active crond.service  //查看某个服务示范为active]

systemctl is-enable crond.service //查看服务是否开启

 

 

target 

系统为了方便管理用target来管理unit

 

一个target 由多个unit组成。

列出系统里面所有的target

systemctl list-unit-files --type=target

 

 

systemctl list-dependencies multi-user.target //查看指定target下面有哪些unit

大多数是service

 

 

systemctl get-default //查看系统默认的target

systemctl set-default multi-user.target  //设置默认的多用户target

 

 

一个service属于一种类型的unit

多个unit组成了一个target

一个target里面包含了多个service

 

 

cat /usr/lib/systemd/system/sshd.service //查看[install]部分

sshd.service 属于multi-user.target

[Install]

WantedBy=multi-user.target