美文网首页Linux学习
linux基础学习笔记三:任务、进程、服务管理

linux基础学习笔记三:任务、进程、服务管理

作者: Caucher | 来源:发表于2022-07-28 21:35 被阅读0次

    4.1 定时任务

    linux定时任务由crond这个服务管理,Crond每分钟执行三个位置的脚本:

    • /etc/crontab:系统相关的,由root直接编写
    • /etc/cron.d/*:自定义的软件相关
    • /var/spool/cron/*:用户用crontab -e命令编写的定时任务。

    定时任务执行的日志位于:/var/log/cron
    关于crontab -e日期编写:,表示多个时间,-表示一段时间,*/5表示每5个时间单位做一次。

    4.2 任务管理

    在一个shell中,如果任务都在前台执行,那一个shell只能执行一个任务,效率低下。一种方式是将任务放到【后台】执行,但注意这里的后台指的是shell的后台,也是shell的子进程,并非是系统的后台。

    • &:只需在命令后面加入这个符号,即可转入后台执行,但是stdout和stderr依然会输出到前台命令行上。在执行结束后,也会有任务结束的提示。
    • jobs:任务执行时,会产生一个job id,注意不是pid,上述后台执行时,会产生类似[1] 19888类似的输出,表示的就是job id和pid。jobs这个命令就是显示所有后台任务的状态和对应的命令,参数-l会额外显示pid。
    • [ctrl]+z:这个热键可以将前台正在执行的任务暂停,放到后台去;
    • fg %job id:这个命令将一个后台任务拿到前台来继续执行;
    • bg %job id:这个命令将一个后台任务在后台继续执行,相当于给命令后面加了一个&
    • kill %job id:可以杀掉一个任务,常见的参数有-1重启进程,-9强制杀掉,-19暂停运行([ctrl]+z
      • killall bash:可以杀掉用bash启动的所有任务,通常用来终止任务;
      • 但注意kill并不是杀掉的意思,而是向进程发送信号。
    • nohup:上面我们提到,即使放到后台,也是shell的后台,一旦shell关掉了,所有的任务也就都关了。为了避免和shell关联,可以用nohup。但是注意nohup是不支持shell内置命令的。

    4.3 进程管理

    进程有五种状态:R:running(运行),S:sleeping(挂起),D:阻塞,T:后台暂停状态或者在跟踪状态,Z:僵尸状态。

    • ps -l:当前shell的相关进程,ps aux查看所有运行的进程。
    • pstree -p:进程树
      • 能观察到所有进程都是1号进程systemd的子进程。
    • top
      • f调显示的项目;
      • 1:查看各个CPU的负载情况;
      • -p pid:参数可以查看某一个进程的情况
      • eE用来调内存单位;
      • M按照内存使用排序,P按照CPU使用排序;
      • VIRT:进程申请使用的内存,不是实际使用的,意义不大;
      • RES:进程的常驻内存,包含SHR,但不包含SWAP
      • SHR:多核之间的共享内存,通常是共享库函数;
      • TIME+:累计CPU时间,注意不是运行时间,是占用CPU的时间,多核程序会累计在多个CPU上的时间。
      • 系统负载和每秒内运行的任务数相关。
    • 进程的优先级:进程一般都有一个优先级,由linux计算,值越小越先执行,具体来说会有一个PR值,由系统设置无法改动,还有一个NICE值(NI),可以由用户微调。使用nicerenice命令可以调整。
    • free -m查看内存信息
    • netstat:查看网络信息,分成两部分,一部分是真的网络连接(type为tcp/udp),一部分是本机的进程间通信(IPC,type为unix):
      • 网络连接:
        • Recv-Q:接收队列中的消息包数量,Send-Q:发送队列
      • 本地socke
        • RefCnt:关联的进程数;
        • Path:关联的进程路径
      • netstat -ltunp:列出正在侦听的网络连接。
    • dmseg:里面存在内核启动时的信息;
    • vmstat:能对当下系统资源做监控。
    • 有关/proc目录下的信息:
      • 每个进程对应的pid都有一个目录,存储着进程相关信息。比较典型的cmdline存储启动命令,environ存储环境变量。
      • /proc下面还存储着相当多的其他信息,包括cpu,内核版本,文件系统,挂在分区,驱动,等等,是很多命令读取的来源地。
    • fuser -v:可以通过文件找出使用该文件的所有进程;
    • lsof:查看进程使用的文件和设备,侦听的端口。
      • 参数-p:指定pid;参数-c指定命令的名称,支持正则表达式。
      • lsof + 文件名:也可以查看打开该文件的进程,+d表示不递归查询目录,+D则会递归查询。
      • lsof -i可以查看与网络相关的连接,后面可以接具体端口号,比如lsof -i:22-25 -nP,-P可以显示具体的端口号,-n显示具体ip。

    4.4 服务管理

    linux中服务就是后台守护进程,可能是一个,也可能是多个。

    • 服务的类型:

      • .service:一般服务类型,主要是系统服务。
      • .socket:内部程序IPC的服务。
      • .target:一组.service和/或.socket服务打包成的。
      • .mount:挂载相关的;.path:检测特定目录的服务;.timer:循环执行的服务。
    • 网络服务还会额外对应端口,对应规则在/etc/services

    • 服务管理:systemctl [command] [xxx.service/target]

      • start, stop, restart:启动,停止,重启;
      • reload:重新加载配置;
      • enable, disable:开机自启动, 非自启动;
      • status:状态
    • 查看所有的服务: systemctl

      • --all:也列出没启动的服务
    • 服务的状态:

      • running:运行中;
      • exited:一次性服务,已经结束;
      • listening:等待其他事件触发的服务;
      • inactive:挂掉的服务。

    相关文章

      网友评论

        本文标题:linux基础学习笔记三:任务、进程、服务管理

        本文链接:https://www.haomeiwen.com/subject/itszirtx.html