zoukankan      html  css  js  c++  java
  • Linux计划任务与进程管理


    计划任务

    crond配置文件

    /etc/crontab  //crontab配置文件 
    /etc/cron.deny  //该文件中所列用户不允许使用crontab命令 
    /var/spool/cron/*  //所有用户定时文件都存放此目录,文件以用户名命名 
    /var/log/cron  //定时任务执行后的日志文件,可用来回溯
    

    crond任务管理

    • crond [选项]

    • 常用选项:

      • -e 编辑crontab文件内容 crontab -e
      • -l 查看crontab文件内容 crontab -l
      • -r 删除crontab文件内容 crontab -r
      • -u 管理其他用户的计划任务 crontab -u bad -l
    • 直接修改/var/spool/cron/username

    创建计划任务是RHCSA中必考的一道题目,所以需要知道怎么创建计划任务,以及使用其他用户创建计划任务

    crond时间格式

    # 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) 
    # |  |  |  |  | 
    # *  *  *  *  *   command to be executed
    
    *		//表示任意的(分、时、日、月、周)时间都执行
    -		//表示一个时间范围段
    ,		//表示分隔时段
    */n 	//表示每隔n单位时间, 如*/10 每10分钟
    

    crond书写规范

    脚本开头建议填写注释信息, 包括执行时间、周期、任务
    计划任务执行脚本存放的路径/scripts/
    执行shell脚本任务前加/bin/sh, 脚本结尾加&>/dev/null
    例如:30 01 * * * /bin/sh /scripts/www_backup.sh &>/dev/null
    调试好后应屏蔽debug输出信息,避免产生系统垃圾占用过多inode, 如需输出日志, 可重定向至日志文件
    例如:30 01 * * * /bin/sh /scripts/www_backup.sh &>/tmp/www_backup.log 
    

    进程管理

    systemd

    • systemd是系统启动的第一个进程,即/sbin/init
    • 配置文件:/usr/lib/systemd/system,/etc/systemd/system

    Unit

    • systemd使用unit的概念来管理服务

    • 配置文件:

      • /usr/lib/systemd/system
      • /run/systemd/system
      • /etc/systemd/system

    Unit类型

    • Service unit 文件扩展名为.service,用于定义系统服务
    • Target unit 文件扩展名为.target,用于模拟实现“运行级别”
      • 0 关机
      • 1 单用户模式
      • 2 多用户模式
      • 3 多用户模式
      • 4 多用户模式
      • 5 图形级别
      • 6 重启
    • Device unit 文件扩展名为.device,用于定义内核识别的设备
    • Mount unit 文件扩展名为.mount,用于定义文件系统挂载点
    • Socket unit 文件扩展名为.socket,用于标识进程间通信用的socket文件
    • Snapshot unit 文件扩展名为.snapshot,用于管理系统快照
    • Swap unit 文件扩展名为.swap,用于标识swap设备
    • Automount unit 文件扩展名为.automount,用于实现文件系统的自动挂载点
    • Path unit 文件扩展名为.path,用于定义文件系统中的一个文件或目录

    systemctl

    • 语法:systemctl 命令 name[.service|.target]

    • 常用命令:

      • start name.service 启动服务
      • stop name.service 停止服务
      • restart name.service 重启服务
      • status name.service 查看服务状态
      • mask name.service 禁止设定为开机自启
      • unmask name.service 取消禁止设定为开机自启
      • enable name.service 设定某服务开机自动启动
      • disable name.service 禁止服务开机自动启动
    • 不常命令:

      • try-restart name.service 服务已经启动则重启,服务未启动则不做任何操作
      • reload-or-restart name.service 重载或重启服务
      • reload-or-try-restart name.service 重载或条件式重启服务
      • list-dependencies name.service 查看服务的依赖关系
      • is-active name.service 查看某服务当前激活与否的状态
      • is-enabled name.service 查看服务是否开机自动启动
      • isolate name.target 切换至某级别

    如:

    • systemctl isolate graphical.target 切换至图形界面
    • list-unit-files --type service 查看所有服务的开机自动启动状态(是否开机自启)
    • get-default 查看默认运行级别
    • set-default name.target 设置默认运行级别
    • hybrid-sleep 混合睡眠,快照并挂起

    在平时我们启动相关的服务时,可以不用末尾的.service也是可以的,有的也是可以Tab补全的

    进程分类

    前台进程

    • 与终端相关的进程,通过终端启动的进程

    守护进程

    • daemon,与终端无关的进程(如内核),在系统引导过程中启动的进程

    进程状态

    • Excuting 运行
    • Ready 睡眠
    • Uninterruptible sleep 不可中断的睡眠
    • Interruptible sleep 可中断的睡眠
    • Zombie 僵尸进程,不释放占据的内存
    • Stopped 停止,暂停于内存中,不会被调度,除非手动启动

    进程优先级

    • 0-139,数字越小,优先级越高

      • 0-99:实时优先级,内核调整
      • 100-139:静态优先级,用户可控制

    nice

    • nice的范围是(-20,19),-20对应100,19对应139
      • nice级别越高,优先级越低
      • nice级别越低,优先级越高

    进程优先级调整

    • 调整已经启动的进程的nice值:
      • renice 优先级 进程id
    • 在启动时指定nice值:(-20,19)
      • nice -n 优先级 命令

    进程信息保存在/proc/PID目录下

    进程管理命令

    ps(process state)

    • 列出当前进程;

    • 五种状态:

      • D 不可中断
      • R 运行
      • S 中断
      • T 停止
      • Z 僵死
    描述状态标志
    进程已被停止(暂停) T
    进程已释放了其所有资源(pid除外) Z
    进程正在CPU上运行或者正在等待于CPU上运行 R
    进程正处于睡眠状态,直至满足某些条件后才会启动 D
    进程正在等在I/O或某些条件得到满足,并且绝对不会印象信号 S
    • 常用选项:

      • -a 显示所有与终端有关的进程
      • -u 显示进程是由哪个用户启动的
      • -x 显示所有与终端无关的进程

      -e //显示所有进程,与-A效果相同
      -l //以长格式显示
      -F //显示更详细的完整格式的进程信息
      -f //显示更详细的完整格式的进程信息
      -o //根据自己的需要选择要显示的字段
      -H //以进程层级格式显示进程相关信息

    [root@bad ~]# ps aux | head -5
    USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root          1  0.0  0.4  53676  7624 ?        Ss   21:40   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 23
    root          2  0.0  0.0      0     0 ?        S    21:40   0:00 [kthreadd]
    root          3  0.0  0.0      0     0 ?        S    21:40   0:00 [ksoftirqd/0]
    root          5  0.0  0.0      0     0 ?        S<   21:40   0:00 [kworker/0:0H]
    
    • USER:用户名
    • PID:进程id
    • %CPU:进程运行占用CPU的百分比
    • %MEM:进程占用内存的百分比
    • VSZ:该进程使用的虚拟内存量,表示一个程序完全驻留在内存中占用的虚拟内存量
    • RSS:该进程占用的固定内存量
    • TTY:终端名
    • STAT:进程开启时间
    • START:进程的状态
    • TIME:该进程实际使用的CPU时间
    • COMMAND:进程运行指令
    [root@bad ~]# ps -elf | head -5
    F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
    4 S root          1      0  0  80   0 - 13419 ep_pol 21:40 ?        00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 23
    1 S root          2      0  0  80   0 -     0 kthrea 21:40 ?        00:00:00 [kthreadd]
    1 S root          3      2  0  80   0 -     0 smpboo 21:40 ?        00:00:00 [ksoftirqd/0]
    1 S root          5      2  0  60 -20 -     0 worker 21:40 ?        00:00:00 [kworker/0:0H]
    
    • UID:用户名
    • PID:进程id
    • PPID:父进程号
    • C:运行的CPU编号
    • PRI:优先级
    • NI:nice值
    • STIME:进程的启动时间
    • TTY:终端名
    • TIME:运行时的累积时长
    • CMD:命令

    pstree

    • 显示当前系统的进程树

    pgrep

    • 在当前系统查找某些进程,只显示进程号

    pidof

    • 根据进程名查找PID号

    vmstat

    • 查看虚拟内存状态
    • 用法:vmstat [选项]
      • vmstat 2 表示每2秒刷新一次
      • vmstat 2 5 表示每2秒刷新一次,刷新5次后退出
    • 常用选项:
      • -s 显示内存的统计数据

    后台运行作业

    • 在命令后跟上&符号可以生成一个后台作业
      • sleep 1000 &

    jobs

    • 命令用于显示当前所有的后台作业
      • + 命令将默认操作的作业
      • - 命令将第二个默认操作的作业

    fg

    • 命令用于将后台作业调至前台运行

    bg

    • bg+作业号可使后台已停止的作业重新运行

    kill

    • kill加上作业号可以手动杀死指定作业

    top

    • 常用选项:

      • -d 设置延迟时长,top -d 1 表示每隔1秒刷新一次,默认每隔5秒刷新
      • -b 批模式翻屏显示,默认只实时显示一屏
    • top命令交互式子命令:

      • M 根据驻留内存大小进行排序,默认根据CPU百分比排序
      • P 根据CPU使用百分比进行排序
      • T 根据累计时间(占据CPU时长)进行排序
      • l 是否显示平均负载和启动时间
      • t 是否显示进程和CPU状态相关信息
      • m 是否显示内存相关信息
      • c 是否显示完整的命令行信息
      • q 退出top命令
      • k 终止某个进程
      • 1 显示所有CPU的信息
      • s 修改刷新时间间隔

     

    以上内容均属原创,如有不详或错误,敬请指出。
    
    本文作者: 坏坏
  • 相关阅读:
    项目中对axios进行二次封装
    vue对象数组数据变化,页面不渲染
    深拷贝和浅拷贝
    你说的都队-凡事预则立
    你说的都队——项目系统设计与数据库设计
    2020软件工程作业——团队04
    2020软件工程作业——团队03
    2020软件工程作业——团队02
    你说的都队——团队展示
    TCP协议
  • 原文地址:https://www.cnblogs.com/bad5/p/12424282.html
Copyright © 2011-2022 走看看