linux任务计划
命令crontab
crontab -u:表示指定某个用户,不加-u,默认为当前用户
crontab -e:表示制定计划任务
crontab -l:表示列出计划任务
crontab -r:表示删除计划任务
先进入任务计划的配置文件
从左到右的5个*分别表示:分(0-59)、时(0-23)、日(1-31)、月(1-12)、周(0-6)
输入crontab -e,编辑配置文件,与vim的用法一样
例:
0 3 * * * /bin/bash /user/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log
表示每天凌晨3点都执行脚本,将正确日志和错误日志记录到/tmp/123.log文件中(*表示所有的意思)
0 3 1-10 */2 2,5 /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log
其中1-10表示范围,1号到10号;*/2表示双月,可以被2整除的;2,5表示周二和周五;这里没有年份,可以用星期确定唯一性
完成编辑之后,需要启动服务systemctl start crond;可以用ps aux |grep cron命令,出现/usr/sbin/crond -n就表示已经启动;还可以使用命令systemctl startus crond,有绿色active (running)也表示已经启动了,若没颜色active (dead)表示没有启动
注意:在编写脚本时候,要使用绝对路径,否则命令不在PATH里面,会导致任务计划不执行。建议每写一个命令都要追加日志,这样遇到错误,也有据可查。
任务计划备份
crontab -l,列出计划任务
计划任务存放在/var/spool/cron/username中,备份时找到对应用户名文件复制即可
crontab -r,删除计划任务,也可以指定用户-u
chkconfig工具
chkconfig --list,列出所有的系统服务
服务的脚本存放位置:
chkconfig network off,将network服务关闭
7个运行级别分别表示:
0(关机);
1(单用户);
2(多用户模式,没nfs服务)
3(多用户模式,不带图形)
4(保留)
5(多用户模式带图形)
6(重启)
针对某一个或几个运行级别状态打开、关闭,多个运行级别之前不用符号隔开
自定义添加和删除服务
进入/etc/init.d/目录下,只有在这个目录下,才能添加到服务列表里去
vim 123,对文件内容有要求,首先要是一个shell脚本,然后有chkconfig和description的格式,才能被识别,格式如下:
删除服务
systemd管理服务
systemctl list-unit-files,查看所有的服务
systemctl list-units --all --type=service,指定type,列出所有的service,按空格可以往下翻,不加-all,则不会列出inactive项
几个常用的和服务相关的命令
systemctl enable crond.service,让服务开机启动(.service可以省略);systemctl disable crond,不让服务开机启动
systemctl status crond,查看状态
systemctl stop crond,停止服务;
systemctl start crond,启动服务;
systemctl restart crond,重启服务;
systemctl is-enabled crond ,检查服务是否开机启动
unit介绍
unit所在目录位置:/usr/lib/systemd/system/
unit文件类型
- service 系统服务
- target 多个unit组成的组
- 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-units --type=service,列出状态为active的service
systemctl is-active crond.service,查看某个服务是否为active
target介绍
系统为例方便管理用target来管理unit
systemctl list-unit-files --type=target,列出系统中所有的target
systemctl list-dependencies multi-user.target,查看指定target下面有哪些unit
systemctl get-default,查看系统默认的target
systemctl set-default multi-user.target,设置默认的target
一个service属于一种类型的unit,多个unit组成了一个target,一个target里面包含了多个service。
cat /usr/lib/systemd/system/sshd.service ,查看sshd.service属于哪个target,看Install部分可知
扩展
2. xinetd服(默认机器没有安装这个服务,需要yum install xinetd安装)