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表示一个范围1到5
可用格式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:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形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
列出所有,包括失败的或者inactive的unit
[root@am-01:~#] systemctl list-units --all
列出inactive的unit
[root@am-01:~#] systemctl list-units --all --state=inactive
列出状态为active的service
[root@am-01:~#] systemctl list-units --type=service
查看某个服务是否为active
[root@am-01:~#] systemctl is-active crond.service active
target介绍
系统为了方便管理用target来管理unit,target下面也可以继续有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