当前位置:   article > 正文

Linux系统管理-crond、chkconfig、systemd、unit、target

linux target static

扩展
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
 

linux任务计划cron

crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

语法: crontab [options]
Options:
-e:=edit 编辑用户的计时器设置
-l:=list 列出用户的计时器设置
-r:=remove 删除用户的计时器设置
-u:=user 指定设定计时器的用户

配置计划任务

crontab的配置文件: /etc/crontab

  1. [root@yong-01 ~]# cat /etc/crontab
  2. SHELL=/bin/bash
  3. PATH=/sbin:/bin:/usr/sbin:/usr/bin
  4. MAILTO=root
  5. # For details see man 4 crontabs
  6. # Example of job definition:
  7. # .---------------- minute (0 - 59)
  8. # | .------------- hour (0 - 23)
  9. # | | .---------- day of month (1 - 31)
  10. # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
  11. # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
  12. # | | | | |
  13. # * * * * * user-name command to be executed
设定计划任务 (5个“*“号的含义)

*    *    *    *    *

分  时   日  月  周

例如:

  1. [root@yong-01 ~]# crontab -e
  2. 0 3 * * * /bin/bash /user/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log
  3. 0 3 1-10 */2 2,5 /bin/bash /user/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log

解析:

  • 第一条命令:
    每天凌晨3点(*位置不指定数字就代表每天、月、周),当前用户(未指定用户,默认为当前用户)执行该命令(123.sh提前写好的命令脚本),并将正确日志和错误日志记录到/tmp/123.log文件中。

  • 第二条命令:
    每个偶数月(*/2:表示能被2整除)1号到10号的周二和周五的凌晨3点,当前用户(未指定用户,默认为当前用户)执行该命令(123.sh提前写好的命令脚本),并将正确日志和错误日志记录到/tmp/123.log文件中。

启动crond服务/查看服务状态

配置完成后需要启动crond服务:

  1. 启动服务:
  2. [root@yong-01 ~]# systemctl start crond
  3. 查看crond服务状态:
  4. 方法1
  5. [root@yong-01 ~]# systemctl status crond
  6. Active: active (running) since 一 2017-07-17 10:05:11 CST; 4h 48min ago //看这一行active (running)
  7. 方法2: 看进程crond
  8. [root@yong-01 ~]# ps aux |grep crond
  9. root 707 0.0 0.0 126268 1656 ? Ss 20:29 0:00 /usr/sbin/crond -n
  10. root 11520 0.0 0.0 112676 984 pts/0 R+ 21:15 0:00 grep --color=auto cro
  11. 停止crond服务:
  12. [root@yong-01 ~]# systemctl stop crond.service

注意: 在编写配置文件或者shell脚本时,所有的命令都要使用绝对路径;每个计划任务追加一个日志。

查看现有的计划任务
  1. [root@yong-01 ~]# crontab -l
  2. 0 3 * * * /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>123.log
  3. 0 3 1-10 */2 2,5 /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>123.log

计划任务存放位置: /var/spool/cron/,所有的计划任务存放在该目录下以用户名命名的文件中,备份时可以使用该文件。

  1. [root@yong-01 ~]# cat /var/spool/cron/root
  2. 0 3 * * * /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>123.log
  3. 0 3 1-10 */2 2,5 /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>123.log
删除计划任务
[root@yong-01 ~]# crontab -r

注: 以上所有操作都可以附加-u选项来指定用户。

chkconfig工具

chkconfig命令检查、设置系统的各种服务。这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接(该命令多用于centos6及以前版本)。

语法: chkconfig [options]
Options:
--list:查看在使用chkconfig命令的服务的状态
--add:增加指定服务
--del:删除指定服务
--level:指定某系统服务要在系统某运行级别中开启或关毕。

应用:

  • chkconfig --list 查看当前系统服务状态
  1. [root@yong-02 ~]# chkconfig --list
  2. 注:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据
  3. 可能被原生 systemd 配置覆盖。
  4. 要列出 systemd 服务,请执行 'systemctl list-unit-files'
  5. 查看在具体 target 启用的服务请执行
  6. 'systemctl list-dependencies [target]'
  7. netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
  8. network 0:关 1:关 2:开 3:开 4:开 5:开 6:关

服务所在位置:/etc/init.d/

  1. [root@yong-02 ~]# ls /etc/init.d/
  2. functions netconsole network README
  • 更改服务状态

    • 更改服务所有状态:
    [root@yong-02 ~]# chkconfig network off/on
    
    • 功能服务在某一运行级别的状态:level 345 是指3和4和5,中间不加“,”
    [root@yong-02 ~]# chkconfig --level 345 network off/on
    

    运行级别配置文件:“/etc/inittab”,centos7已不再使用该文件。

  • 添加/删除服务
    首先,在添加服务之前必须把该服务的脚本放到“/etc/init.d/”目录下并添加执行权限。然后执行命令:用cp /etc/init.d/network /etc/init.d/123  来做演示:

  1. [root@yong-02 ~]# cp /etc/init.d/network /etc/init.d/123
  2. [root@yong-02 ~]# ls /etc/init.d/
  3. 123 functions netconsole network README
  4. 添加:
  5. [root@yong-02 ~]# chkconfig --add /etc/init.d/123
  6. [root@yong-02 ~]# chkconfig --list
  7. 注:该输出结果只显示 SysV 服务,并不包含
  8. 原生 systemd 服务。SysV 配置数据
  9. 可能被原生 systemd 配置覆盖。
  10. 要列出 systemd 服务,请执行 'systemctl list-unit-files'
  11. 查看在具体 target 启用的服务请执行
  12. 'systemctl list-dependencies [target]'
  13. 123 0:关 1:关 2:开 3:开 4:开 5:开 6:关
  14. netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
  15. network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
  16. 删除:
  17. [root@yong-02 ~]# chkconfig --del /etc/init.d/123
  18. [root@yong-02 ~]# chkconfig --list
  19. 注:该输出结果只显示 SysV 服务,并不包含
  20. 原生 systemd 服务。SysV 配置数据
  21. 可能被原生 systemd 配置覆盖。
  22. 要列出 systemd 服务,请执行 'systemctl list-unit-files'
  23. 查看在具体 target 启用的服务请执行
  24. 'systemctl list-dependencies [target]'
  25. netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
  26. network 0:关 1:关 2:开 3:开 4:开 5:开 6:关

注: 关于该服务脚本

systemd管理服务

  • systemd是centos7管理的一个服务机制,在centos6或之前的版本中可以使用chkconfig工具去管理系统的服务,在centos7中,也可以使用,但会提示使用 systemctl list-unit-files ,用它来查看所有的服务。

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

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

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

• systemctl disable crond //不让开机启动

• systemctl status crond //查看状态

• systemctl stop crond //停止服务

• systemctl start crond //启动服务

• systemctl restart crond //重启服务

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

systemctl list-unit-files //查看所有的服务

  1. [root@yong-02 ~]# chkconfig --list
  2. 注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。
  3. 如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'
  4. 欲查看对特定 target 启用的服务请执行
  5. 'systemctl list-dependencies [target]'
  6. netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
  7. network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
  8. [root@yong-02 ~]# systemctl list-unit-files //查看所有的服务,里面不仅有service,还有socket,还有target
  9. UNIT FILE STATE
  10. proc-sys-fs-binfmt_misc.automount static
  11. dev-hugepages.mount static
  12. dev-mqueue.mount static
  13. proc-sys-fs-binfmt_misc.mount static
  14. sys-fs-fuse-connections.mount static
  15. sys-kernel-config.mount static
  16. sys-kernel-debug.mount static
  17. tmp.mount disabled
  18. brandbot.path disabled
  19. 等等

systemd相关命令

systemctl list-units --all --type=service //列出所有的service

  • 会列出所有的service
  • 列出描述信息,是否是loaded,是否是active
  • 按 空格 往下翻
  • 若是不加 --all ,则就不会列出 未激活的active
  1. [root@yong-02 ~]# systemctl list-units --all --type=service //列出所有的service
  2. UNIT LOAD ACTIVE SUB DESCRIPTION
  3. auditd.service loaded active running Security Auditing Service
  4. avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack
  5. brandbot.service loaded inactive dead Flexible Branding Service
  6. cpupower.service loaded inactive dead Configure CPU power related
  7. crond.service loaded active running Command Scheduler
  8. 等等等,只截取了一部分
  9. 并在最下面,会告诉你 LOAD,ACTIVE,SUB是什么意思
  10. LOAD = Reflects whether the unit definition was properly loaded.
  11. ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
  12. SUB = The low-level unit activation state, values depend on unit type.
  13. 还会提醒,若想列出所有的 unit files,请使用 systemctl list-unit-files 命令
  • systemctl enable crond.service //让服务开机启动——>service可省略
  • systemctl disable crond //不让开机启动
  1. [root@yong-02 ~]# systemctl enable crond //让服务开机启动
  2. [root@yong-02 ~]# systemctl disable crond //不让开机启动
  3. Removed symlink /etc/systemd/system/multi-user.target.wants/crond.service.
  4. [root@yong-02 ~]# systemctl enable crond
  5. Created symlink from /etc/systemd/system/multi-user.target.wants/crond.service to /usr/lib/systemd/system/crond.service.
  • systemctl status crond //查看状态
  1. [root@yong-02 ~]# systemctl status crond
  2. ● crond.service - Command Scheduler
  3. Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
  4. Active: active (running) since 六 2018-05-12 01:41:51 CST; 52min ago
  5. Main PID: 642 (crond)
  6. CGroup: /system.slice/crond.service
  7. └─642 /usr/sbin/crond -n
  8. 512 01:41:51 yong-02 systemd[1]: Started Command Scheduler.
  9. 512 01:41:51 yong-02 systemd[1]: Starting Command Scheduler...
  10. 512 01:41:51 yong-02 crond[642]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 62% if used.)
  11. 512 01:41:52 yong-02 crond[642]: (CRON) INFO (running with inotify support)
  • systemctl stop crond //停止服务
  • systemctl start crond //启动服务
  • systemctl restart crond //重启服务
  • systemctl is-enabled crond //检查服务是否开机启动
  1. [root@yong-02 ~]# systemctl is-enabled crond
  2. enabled
  3. [root@yong-02 ~]# systemctl disable crond
  4. Removed symlink /etc/systemd/system/multi-user.target.wants/crond.service.
  5. [root@yong-02 ~]# systemctl is-enabled crond
  6. disabled
  7. [root@yong-02 ~]# systemctl enable crond
  8. Created symlink from /etc/systemd/system/multi-user.target.wants/crond.service to /usr/lib/systemd/system/crond.service.
  • 并且可以通过输出信息,在 /etc/systemd/system/multi-user.target.wants/crond.service 获得service的配置文件内容
  1. [root@yong-02 ~]# cat /etc/systemd/system/multi-user.target.wants/crond.service 获得service的配置文件内容
  2. [Unit]
  3. Description=Command Scheduler
  4. After=syslog.target auditd.service systemd-user-sessions.service time-sync.target
  5. [Service]
  6. EnvironmentFile=/etc/sysconfig/crond
  7. ExecStart=/usr/sbin/crond -n $CRONDARGS
  8. KillMode=process
  9. [Install]
  10. WantedBy=multi-user.target
  11. [root@yong-02 ~]# ls -l /etc/systemd/system/multi-user.target.wants/crond.service //是一个软连接,从软链接的右边到左边
  12. lrwxrwxrwx. 1 root root 37 512 02:35 /etc/systemd/system/multi-user.target.wants/crond.service -> /usr/lib/systemd/system/crond.service
  13. [root@yong-02 ~]# ls -l /usr/lib/systemd/system/crond.service //这里才是文件真正的路径
  14. -rw-r--r--. 1 root root 284 83 2017 /usr/lib/systemd/system/crond.service

说明: 伴随某服务的开/关会建立/删除一个指向该服务的软链接“/etc/systemd/system/multi-user.target.wants/crond.service”-->“/usr/lib/systemd/system/crond.service”

 

unit介绍

  • unit所在目录 : /usr/lib/systemd/system/
  • ls /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
    • 并会提示,若要列出所有的units,则需要加 --all
  • systemctl list-units --all //列出所有,包括失败的或者inactive的
  • systemctl list-units --all --state=inactive //列出inactive的unit
  • systemctl list-units --type=service //列出状态为active的service
    • 其中failed是一个特例,也会列出来
  • 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
  • 一个service属于一种类型的unit
  • 多个unit组成了一个target
  • 一个target里面包含了多个service
  • cat /usr/lib/systemd/system/sshd.service 看[install]部分

target相关命令

  • systemctl list-unit-files --type=target //列出系统中所有的target
  1. [root@yong-02 ~]# systemctl list-unit-files --type=target //列出系统中所有的target
  2. UNIT FILE STATE
  3. basic.target static
  4. bluetooth.target static
  5. cryptsetup-pre.target static
  6. cryptsetup.target static
  7. ctrl-alt-del.target disabled
  8. default.target enabled
  9. emergency.target static
  10. 等等等,只截取了一部分
  • systemctl list-dependencies multi-user.target //查看指定target下面有哪些unit
  1. [root@yong-02 ~]# systemctl list-dependencies multi-user.target
  2. multi-user.target
  3. ● ├─auditd.service
  4. ● ├─brandbot.path
  5. ● ├─chronyd.service
  6. ● ├─crond.service
  7. ● ├─dbus.service
  8. ● ├─firewalld.service
  9. ● ├─irqbalance.service
  10. 等等
  • systemctl get-default //查看系统默认的target
  1. [root@yong-02 ~]# systemctl get-default
  2. multi-user.target
  • systemctl set-default multi-user.target //设置默认的target
  1. [root@yong-02 ~]# systemctl set-default multi-user.target
  2. Removed symlink /etc/systemd/system/default.target.
  3. Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
  4. [root@yong-02 ~]# ll /etc/systemd/system/default.target
  5. lrwxrwxrwx. 1 root root 41 512 03:11 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target
  • 一个service属于一种类型的unit
  • 多个unit组成了一个target
  • 一个target里面包含了多个service
  • cat /usr/lib/systemd/system/sshd.service 看[install]部分
  1. [root@yong-02 ~]# cat /usr/lib/systemd/system/sshd.service
  2. [Unit]
  3. Description=OpenSSH server daemon
  4. Documentation=man:sshd(8) man:sshd_config(5)
  5. After=network.target sshd-keygen.service
  6. Wants=sshd-keygen.service
  7. [Service]
  8. Type=notify
  9. EnvironmentFile=/etc/sysconfig/sshd
  10. ExecStart=/usr/sbin/sshd -D $OPTIONS
  11. ExecReload=/bin/kill -HUP $MAINPID
  12. KillMode=process
  13. Restart=on-failure
  14. RestartSec=42s
  15. [Install]
  16. WantedBy=multi-user.target //看这一行属于 multi-user.target
  • 只有multi-user.target 里面的service可以设置开机启动。其他的target设置成默认启动无法正常启动。

target、service、unit关系

一个service属于一种类型的unit,多个unit组成一个target,一个target包含多个service。

转载于:https://my.oschina.net/u/3791387/blog/1811084

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/173723
推荐阅读
相关标签
  

闽ICP备14008679号