linux任务计划
crontab命令
被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
crontab [-uelr]
-u 指定用户,默认是当前用户
-e 编辑计划任务
-l 列出计划任务
-r 删除计划任务
etc/crontab 配置文件
crontab -e 实际上是打开了/var/spool/cron/username文件,
此文件不能直接编辑(会报错),要用crontab -e命令编辑
编辑计划的格式
分 时 日 月 周 user command
分范围0-59,时范围0-23,日范围0-31,月范围0-12,周范围0-6或1-7
可用格式1-5,表示范围1到5
可用格式1,2,3 表示1或2或3
可用格式*/2,表示被2整除的数字,如果是小时就是每隔2小时
要保证服务是启动状态,才能执行
启动服务
systemctl start cron.service
检查服务进程
ps aux |grep cron
检查服务状态
systemctl status crond
Active:active (running)表示已经启动
Active:inactive (dead)表示没有启动
[root@localhost ~]#
cat /etc/crontab
查看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
[root@localhost ~]#
服务管理
chkconfig命令
检查、设置系统的各种服务。这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
chkconfig --list 列出所有服务及其每个级别的开启状态
(只显示属于SysV工具的服务,不包含原生systemd工具的服务,可用systemctl list-unit-files命令查看)
chkconfig --level 3 network off 关闭3级网络服务
chkconfig --level 345 network off 关闭3级,4级,5级网络服务(不能加,号)
chkconfig --del network 删除网络服务
chkconfig --add network 添加网络服务(先将服务脚本加进/etc/init.d/目录下再添加服务)
chkconfig --network off 关闭网络服务
chkconfig --network on 开启网络服务
例:
[root@localhost ~]#
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@localhost ~]#
cat /etc/init.d/network
查看network服务脚本
#! /bin/bash
首先必须是shell脚本
#
# network Bring up/down networking
#
# chkconfig:
2345 10 90
运行级别2345,第10位启动,第90位关闭
这两部分必须要有
# description: Activates/Deactivates all network interfaces configured to \
这两部分必须要有
# start at boot time.
#
### BEGIN INIT INFO
# Provides: $network
# Should-Start: iptables ip6tables NetworkManager-wait-online NetworkManager $network-pre
# Short-Description: Bring up/down networking
# Description: Bring up/down networking
### END INIT INFO
systemd管理服务
systemctl命令
systemctl list-units --all --type=service 列出所有服务
systemctl list-units --type=service 列出所有激活的服务
systemctl list-units-files 列出所有单元文件
几个常用的服务相关的命令
systemctl enable crond.service 开启服务开机启动
systemctl disable crond.service 禁止服务开机启动
systemctl status crond 查看服务状态
systemctl start crond 启动服务
systemctl stop crond 停止服务
systemctl restart crond 重启服务
systemctl is-enable crond 检查服务是否开机启动
unit类型
ls /usr/lib/systemd/system 系统所有unit,分为以下类型
service 系统服务
target 多个unit组成的组
device 硬件设备
mount 文件系统挂载点
automount 自动挂载点
path 文件或路径
scope 非systemd启动的外部进程
slice 进程组
snapshot systemd的快照
socket 进程间通信套接字
swap swap文件
timer 定时器
systemctl list-units 列出正在运行的unit
systemctl list-units --all 列出所有unit
systemctl list-units --all --state=inactive 列出不活动的unit
systemctl list-units --type=service 列出所有活动的service
systemctl is-active ***.service 查看某个服务是否在活动
target单元组
systemctl list-unit-files --type=target 列出所有单元组
systemctl list-dependencies multi-user.target 查看指定单元组下的单元
systemctl get-default 查看系统默认的单元组
systemctl set-default multi-user.target 设置默认的单元组
一个service属于一种类型的unit,多个unit组成了一个target
一个target里边包含了多个service或其他类型的unit
cat /usr/lib/systemd/system/sshd.service 看install部分内容
[root@localhost ~]#
cat /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service
[Service]
Type=notify
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
[root@localhost ~]#