八周一次课(3月26日)
10.23 linux任务计划cron
10.24 chkconfig工具
10.25 systemd管理服务
10.26 unit介绍
10.27 target介绍
扩展
1. anacron http://blog.csdn.net/strikers1982/article/details/4787226
2. xinetd服(默认机器没有安装这个服务,需要yum install xinetd安装) http://blog.sina.com.cn/s/blog_465bbe6b010000vi.html
3. systemd自定义启动脚本 http://www.jb51.net/article/100457.htm
10.23 linux任务计划cron
介绍
任务计划,在linux上是必不可少的。
任务计划的配置文件
[root@centos7-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
解释:
MAILTO=root 发送邮给指定root用户
SHELL=/bin/bash使用的shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin环境变量,使用的命令路径
日期
*****从左到右:
分钟
时
日
月(可以英文简写,jan,feb,mar,apr)
周几(0-6,0和7表示星期日,可以英文简写sun,mon,tue,wed,thu,fri,sat)
用户(不写用户名表示root)
最后一行是命令
格式演示
进入任务计划配置文件命令#crontab -e,这操作跟vim用法一样,只是换了方式来打开配置文件,但是不能直接用vi/vim来修改配置文件。
crontab -e
演示示例,凌晨3点去执行任务(执行命令,在日期后面放上即可)。
任务内容为,执行脚本/bin/bash 脚本名字/usr/local/sbin123.sh
指定输出日志,正确输出到从定向文件/tmp/123.log,错误的输出定义到/tmp/123.log 如果每天都需要操作记录,利用来追加>>
以下参数:
0 3 * * * /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log
范围用法,
分范围0-59,时范围0-23,日范围1-31,月范围1-12,周1-7
双月(能整除2的月份)的1-10号每周2周5的3点执行
0 3 1-10 */2 2,5 /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log
启动crontab服务
[root@centos7-01 ~]# systemctl start crond [root@centos7-01 ~]# ps ux |grep cron root 567 0.0 0.1 126236 1616 ? Ss 16:29 0:00 /usr/sbin/crond -n root 2211 0.0 0.0 123208 780 ? Ss 17:01 0:00 /usr/sbin/anacron -s root 2354 0.0 0.0 112676 980 pts/0 S+ 17:19 0:00 grep --color=auto cron
此命令也可以查看crond服务状态
[root@centos7-01 ~]# systemctl status crond
要保证服务是启动状态,
否则会无效。
注意
如果发现计划不生效
有可能是没有用绝对路径,
键入绝对路径(最稳),也可以在脚本里添加变量,然后后面参数敲入相应参数即可。
每写一个任务计划,都要追加日志(正确错误输出,)。
#crontab -l 列出计划任务
例如,
#crontab -e 添加以下计划任务
1 10 * 2 * /usr/bin/find /tmp/ -type f -mtime +100 |xargs rm -f [root@centos7-01 ~]# crontab -l 1 10 * 2 * /usr/bin/find /tmp/ -type f -mtime +100 |xargs rm -f
crontab -l可以查看计划任务。
crontab的文件路径/cron/下的文件,就是对应的用户,例如root就以root命名文件。
#cat /var/spool/cron/root
crontab
-l 列出任务计划
-e 编辑任务计划
-r 删除任务计划
-u 指定用户
10.24 chkconfig工具
Linux系统服务管理-chkconfig
chkconfig是一种服务。
chkconfig是centos7以前使用的版本。
sysv centos7以前的服务管理基制。
systmd centos7的服务管理基制。ps进程排第一,init在centos6进程排第一。
chkconfig命令使用
[root@centos701 ~]# 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:关
chkconfig在centos7下面只剩下这2个服务。
chkconfig服务脚本的目录,MySQL以后也会用到此脚本
[root@centos701 ~]# ls /etc/init.d/ functions netconsole network README
更改network服务状态,例如off它们
[root@centos701 ~]# chkconfig network off [root@centos701 ~]# 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:关
再次开启利用on
[root@centos701 ~]# chkconfig network on [root@centos701 ~]# 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:关
此处数字0-6 是一个运行级别 一共7个级别
0表示关机
1单用户 centos6 及之前的系统版本实用,如果定位至1级别,开机就会自动进入单用户模式。
2多用户模式,不带图形2比3少了一个nfs服务
3多用户模式,不带图形
4保留级别
5多用户,带图形
6重启如果定位6级别,启动就会重启。
更改inittab文件,可以更改运行级别。
vi /etc/inittab
指定某个级别关闭或开启,
[root@centos701 ~]# chkconfig --level 3 network off [root@centos701 ~]# 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:关
如果需要几个级别一起开启或者关闭,可以同一条命令连着级别来写,例如格式:
# chkconfig --level 345 network on此处345 on 表示运行级别的345都开启 [root@centos701 ~]# chkconfig --level 345 network on [root@centos701 ~]# 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:关
把脚本加入到服务列表 chkconfig --add 服务
示例:
[root@centos701 ~]# cd /etc/init.d/ [root@centos701 init.d]# ls functions netconsole network README [root@centos701 init.d]# cp network 123 [root@centos701 init.d]# ls 123 functions netconsole network README [root@centos701 init.d]# chkconfig --add 123 [root@centos701 init.d]# chkconfig --list 123 0:关1:关2:开3:开4:开5:开6:关 netconsole 0:关1:关2:关3:关4:关5:关6:关 network 0:关1:关2:开3:开4:开5:开6:关
文件名无条件要求,但是文件内容有要求,具体参考
vim network
解释:
shell脚本,
2345启动顺序,
运行级别启动顺序第十位10位启动
第90位关闭
描述
删除123服务
chkconfig --del 123
10.25 systemd管理服务
systemd是centos7服务管理机制
列出所有service,以及描述
#systemctl list-units --all --type=service
几个常用的服务相关的命令
#让服务开机启动 (.service可以不用加) systemctl enable crond.service #生成软链接文件 #不让开机启动 systemctl disable crond #查看状态 systemctl status crond #停止服务 systemctl stop crond #启动服务 systemctl start crond #重启服务 systemctl restart crond #检查服务是否开机启动 systemctl is-enabled crond
10.26 unit介绍
Linux系统服务管理-systemd
service 系统服务
target 多个unit组成的组
单用户,emygrcym model,centos6 7个运行级别。centos7有类似的级别
ls /usr/lib/systemd/system //系统所有unit,分为以下类型
[root@centos701 system]# cd /usr/lib/systemd/system [root@centos701 system]# ls -l runlevel* lrwxrwxrwx. 1 root root 15 3月 8 05:05 runlevel0.target -> poweroff.target lrwxrwxrwx. 1 root root 13 3月 8 05:05 runlevel1.target -> rescue.target lrwxrwxrwx. 1 root root 17 3月 8 05:05 runlevel2.target -> multi-user.target lrwxrwxrwx. 1 root root 17 3月 8 05:05 runlevel3.target -> multi-user.target lrwxrwxrwx. 1 root root 17 3月 8 05:05 runlevel4.target -> multi-user.target lrwxrwxrwx. 1 root root 16 3月 8 05:05 runlevel5.target -> graphical.target lrwxrwxrwx. 1 root root 13 3月 8 05:05 runlevel6.target -> reboot.target
注释:
上面 runlevel0.target -> poweroff.target中的runlevel10.target是软链接,真正的文件是poweroff.targt
target是由多个unit组成的一个组,而unit又由多个services组成的组。
不用深究以下几点
device 硬件设备
mount 文件系统挂载点
automount 自动挂载点
path 文件或路径
scope 不是由systemd启动的外部进程
slice 进程组
snapshot systemd快照
socket 进程间通信套接字
swap swap文件
timer 定时器
system的服务 ---> 系统所有unit,分为以下类型
ls /usr/lib/systemd/system arp-ethers.service kmod-static-nodes.service sshd-keygen.service atd.service local-fs-pre.target sshd.service auditd.service local-fs.target [email protected] [email protected] local-fs.target.wants sshd.socket basic.target machine.slice suspend.target basic.target.wants machines.target swap.target blk-availability.service memcached.service sys-fs-fuse-connections.mount bluetooth.target messagebus.service sysinit.target brandbot.path microcode.service sysinit.target.wants brandbot.service multi-user.target sys-kernel-config.mount chrony-dn***[email protected] multi-user.target.wants sys-kernel-debug.mount chrony-dn***[email protected] NetworkManager-dispatcher.service syslog.socket chronyd.service NetworkManager.service syslog.target.wants chrony-wait.service NetworkManager-wait-online.service sysstat.service cloud-config.service network-online.target systemd-ask-password-console.path cloud-config.target network-online.target.wants systemd-ask-password-console.service cloud-final.service network-pre.target systemd-ask-password-plymouth.path cloud-init-local.service network.target systemd-ask-password-plymouth.service cloud-init.service nscd.service systemd-ask-password-wall.path cloud-init-upgrade.service nscd.socket systemd-ask-password-wall.service console-getty.service nss-lookup.target [email protected] console-shell.service nss-user-lookup.target systemd-binfmt.service [email protected] ntpdate.service systemd-bootchart.service cpupower.service ntpd.service systemd-firstboot.service crond.service paths.target systemd-fsck-root.service cryptsetup-pre.target plymouth-halt.service [email protected] cryptsetup.target plymouth-kexec.service systemd-halt.service ctrl-alt-del.target plymouth-poweroff.service [email protected] dbus-org.freedesktop.hostname1.service plymouth-quit.service systemd-hibernate.service dbus-org.freedesktop.import1.service plymouth-quit-wait.service systemd-hostnamed.service dbus-org.freedesktop.locale1.service plymouth-read-write.service systemd-hwdb-update.service dbus-org.freedesktop.login1.service plymouth-reboot.service systemd-hybrid-sleep.service dbus-org.freedesktop.machine1.service plymouth-start.service systemd-importd.service dbus-org.freedesktop.timedate1.service plymouth-switch-root.service systemd-initctl.service dbus.service polkit.service systemd-initctl.socket dbus.socket postfix.service systemd-journal-catalog-update.service dbus.target.wants poweroff.target systemd-journald.service debug-shell.service poweroff.target.wants systemd-journald.socket default.target printer.target systemd-journal-flush.service default.target.wants proc-sys-fs-binfmt_misc.automount systemd-kexec.service dev-hugepages.mount proc-sys-fs-binfmt_misc.mount systemd-localed.service dev-mqueue.mount quotaon.service systemd-logind.service dracut-cmdline.service rc-local.service systemd-machined.service dracut-initqueue.service rdisc.service systemd-machine-id-commit.service dracut-mount.service reboot.target systemd-modules-load.service dracut-pre-mount.service reboot.target.wants [email protected] dracut-pre-pivot.service remote-fs-pre.target systemd-poweroff.service dracut-pre-trigger.service remote-fs.target systemd-quotacheck.service dracut-pre-udev.service rescue.service systemd-random-seed.service dracut-shutdown.service rescue.target systemd-readahead-collect.service ebtables.service rescue.target.wants systemd-readahead-done.service ecs_mq.service rhel-autorelabel-mark.service systemd-readahead-done.timer emergency.service rhel-autorelabel.service systemd-readahead-drop.service emergency.target rhel-configure.service systemd-readahead-replay.service eni.service rhel-dmesg.service systemd-reboot.service final.target rhel-domainname.service systemd-remount-fs.service firewalld.service rhel-import-state.service [email protected] fstrim.service rhel-loadmodules.service systemd-shutdownd.service fstrim.timer rhel-readonly.service systemd-shutdownd.socket [email protected] rpcbind.target systemd-suspend.service getty.target rsyncd.service systemd-sysctl.service graphical.target [email protected] systemd-timedated.service graphical.target.wants rsyncd.socket systemd-tmpfiles-clean.service halt-local.service rsyslog.service systemd-tmpfiles-clean.timer halt.target runlevel0.target systemd-tmpfiles-setup-dev.service halt.target.wants runlevel1.target systemd-tmpfiles-setup.service hibernate.target runlevel1.target.wants systemd-udevd-control.socket htcacheclean.service runlevel2.target systemd-udevd-kernel.socket httpd.service runlevel2.target.wants systemd-udevd.service hybrid-sleep.target runlevel3.target systemd-udev-settle.service initrd-cleanup.service runlevel3.target.wants systemd-udev-trigger.service initrd-fs.target runlevel4.target systemd-update-done.service initrd-parse-etc.service runlevel4.target.wants systemd-update-utmp-runlevel.service initrd-root-fs.target runlevel5.target systemd-update-utmp.service initrd-switch-root.service runlevel5.target.wants systemd-user-sessions.service initrd-switch-root.target runlevel6.target systemd-vconsole-setup.service initrd-switch-root.target.wants [email protected] system.slice initrd.target [email protected] system-update.target initrd.target.wants shutdown.target [email protected] initrd-udevadm-cleanup-db.service shutdown.target.wants timers.target iprdump.service sigpwr.target timers.target.wants iprinit.service sleep.target time-sync.target iprupdate.service -.slice tmp.mount iprutils.target slices.target tuned.service irqbalance.service smartcard.target umount.target kdump.service sockets.target user.slice kexec.target sockets.target.wants wpa_supplicant.service kexec.target.wants sound.target
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
不加--all的话active列会显示全部active和failed(个别)
systemctl is-active crond.service 查看某个服务是否为active
[root@centos701 system]# systemctl is-active crond.service
active
10.27 target介绍
介绍
系统为了方便管理用target来管理unit
显示系统所有的target
#systemctl list-unit-files --type=target
查看指定target下面有哪些unit
#systemctl list-dependencies multi-user.target
大部分都是.service
查看系统默认的target
#systemctl get-default
[root@centos701 system]# systemctl get-default
multi-user.target
设定默认运行级别。
设定开机运行级别,相当于修改chkconfing的默认开机运行级别。
#systemctl set-default multi-user.target [root@centos701 system]# systemctl set-default multi-user.target Removed symlink /etc/systemd/system/default.target. Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
一个service属于一种类型的unit
多个unit组成了一个target
一个target里面包含了多个service
cat /usr/lib/systemd/system/sshd.service //看[install]部分
总结:
系统由多种units组成的,unit是由target去管理,也就是说target由很多unit组成的。