Spark修炼之道(基础篇)——Linux大数据开发基础:第七节:进程管理

    xiaoxiao2026-01-12  9

    本节主要内容

    进程管理简介进程管理常用命令计划任务

    1. 进程管理简介

    (1)进程概念

    进程是操作系统中非常重要的一个概念,进程是程序的执行过程,相对于程序,进程是动态的,在linux系统中,它与用户权限相关,程序与进程并没有一一对应,一个程序可能对应多个进程,例如:

    //ps命令列出当前所有对应当前用户的活动进程 xtwy@ubuntu:~$ ps PID TTY TIME CMD 2087 pts/0 00:00:00 bash 2105 pts/0 00:00:00 ps xtwy@ubuntu:~$ bash //一个bash程序对应多个进程 xtwy@ubuntu:~$ ps PID TTY TIME CMD 2087 pts/0 00:00:00 bash 2141 pts/0 00:00:00 bash 2156 pts/0 00:00:00 ps

    子进程与父进程:一个进程产生另外一个进程,产生的进程称为子进程,生成另外一个进程的进程称为父进程。

    //ps -l显示长格式进程信息 //其中PID表示进程ID,PPID表示其父进程ID xtwy@ubuntu:~$ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 2087 2085 0 80 0 - 1443 wait pts/0 00:00:00 bash 0 S 1000 2141 2087 0 80 0 - 1443 wait pts/0 00:00:00 bash

    (2)进程状态

    进程状态总体来看主要包括三种,分别是就绪状态、运行状态、等待状态,就绪状态指的是进程除了CPU资源,其他运行资源都已获得,当就就绪状态的进程得到CPU资源时,则进入进程进入运行状态,运行状态的进程在时间片用完后会重新转换成就绪状态,如果在运行时进程遇到IO等阻塞操作,则进程会进入等待状态,等待状态的进程当阻塞操作完成后,进程将进入就绪状态

    上述三种进程状态还可以进一步细化,如下图:

    (3)前台进程与后台进程

    前台进程指的是进程在执行时会将命令行阻塞,直到进程执行完毕;后台进程指的是进程在执行时不会阻塞当前命令行,而是在系统后台执行。

    //直接ping,作为前台进程执行 root@ubuntu:~# ping www.baidu.com PING www.a.shifen.com (115.239.211.112) 56(84) bytes of data. 64 bytes from 115.239.211.112: icmp_seq=1 ttl=128 time=4.50 ms //加&符号表示作为后台进程进行执行 root@ubuntu:~# ping www.baidu.com -a & [1] 13330

    2. 进程管理常用命令

    (1) ps命令

    ps 命令常用选项包括: (1)a显示所有用户的进程 (2)u显示用户名和启动时间 (3)x显示所有进程,包括没有控制终端的进程 (4)e显示所有进程,包括没有控制终端的进程,较x选项,信息更为简略 (5)l显示进程详细信息,按长格式显示

    下面给出几个演示: (1)ps -au 显示所有用户进程,并给出用户名和启动时间等详细信息

    (2) ps -aux 显示所有用户进程,包括没有控制终端的进程,并给出用户和和启动埋单等详细信息

    输出格式中对应字段含义: USER: 进程所有者 PID: 进程号 %CPU: CPU占用率 %MEM: 内存占用率 VSZ:表示如果一个程序完全驻留在内存的话需要占用多少内存空间; RSS:指明了当前实际占用了多少内存; TTY: 终端的次要装置号码 (minor device number of tty) STAT: 该进程程的状态,有以下值 D: 不可中断的静止 R: 正在执行中 S: 静止状态 T: 暂停执行 Z: 不存在但暂时无法消除 W: 没有足够的记忆体分页可分配 <: 高优先序的进程 N: 低优先序的进程 L: 有记忆体分页分配并锁在记忆体内 START: 进程开始时间 TIME: 执行的时间 COMMAND:所执行的指令

    (3) ps -l 按长格式显示进程详细信息

    输出格式对应字段含义: F 进程的标志, S 进程的状态, PID 进程的ID, PPID 进程的父进程ID, C 进程的CPU占用率, PRI 进程的优先权, NI 进程的Nice值, ADDR 进程的地址空间, SZ 进程占用内存的大小, WCHAN 进程当前是否在运行, TTY 进程所属终端, Time 进程的运行时间, CMD 进程的命令.

    (2) kill 命令

    有时候某个进程可能会长期占用CPU资源或无法正常执行或超出运行时间等,此时可能希望人工干预直接将进程杀死,这时候kill命令可以派上用场。

    (1)kill pid,关闭进程 有时间kill并不能保证一定会关闭某个进程,例如 此时可以采用强制关闭的方式 (2)kill -9 pid,强制关闭进程 下面给出了强制进程的演示

    强制关闭进程后,终端强制退出

    (3) renice 修改进程的优先级

    root@ubuntu:/home/xtwy# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 12331 12306 0 99 19 - 1120 wait pts/0 00:00:00 su 0 S 0 12340 12331 0 99 19 - 1144 wait pts/0 00:00:00 bash 4 R 0 12368 12340 0 99 19 - 625 - pts/0 00:00:00 ps //重新指定权限 root@ubuntu:/home/xtwy# renice -5 12340 12340: old priority 19, new priority -5 //子进程的权限随父进程权限改变而改变 root@ubuntu:/home/xtwy# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 12331 12306 0 99 19 - 1120 wait pts/0 00:00:00 su 0 S 0 12340 12331 0 75 -5 - 1144 wait pts/0 00:00:00 bash 4 R 0 12373 12340 0 75 -5 - 625 - pts/0 00:00:00 ps

    (4) 进程的前台后台切换

    (1)ctr+c命令终止进程 ping baidu.com -a 命令将一直执行,终端被占用,要终止进程,需要使用ctr+c命令终止当前进程执行

    root@ubuntu:/home/xtwy# ping baidu.com -a PING baidu.com (180.149.132.47) 56(84) bytes of data. ^C64 bytes from 180.149.132.47: icmp_seq=1 ttl=128 time=138 ms --- baidu.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 138.291/138.291/138.291/0.000 ms

    (2)ctr+z命令挂起进程

    root@ubuntu:/home/xtwy# ping baidu.com -a PING baidu.com (180.149.132.47) 56(84) bytes of data. ^Z [1]+ Stopped ping baidu.com -a root@ubuntu:/home/xtwy# jobs [1]+ Stopped ping baidu.com -a

    (3)fg命令将进程转到前台执行

    root@ubuntu:/home/xtwy# fg ping baidu.com -a 64 bytes from 180.149.132.47: icmp_seq=2 ttl=128 time=135 ms 64 bytes from 180.149.132.47: icmp_seq=3 ttl=128 time=139 ms 64 bytes from 180.149.132.47: icmp_seq=4 ttl=128 time=135 ms ^Z [1]+ Stopped ping baidu.com -a

    (4) bg命令将进程转到后台执行

    root@ubuntu:/home/xtwy# bg [1]+ ping baidu.com -a & root@ubuntu:/home/xtwy# 64 bytes from 180.149.132.47: icmp_seq=5 ttl=128 time=134 ms jobs64 bytes from 180.149.132.47: icmp_seq=6 ttl=128 time=135 ms [1]+ Running ping baidu.com -a &

    (5)jobs命令查看任务

    root@ubuntu:/home/xtwy# jobs [1]+ Running ping baidu.com -a &

    (5) top命令动态显示进程信息

    top命令动态显示进程信息,可以对进程的CPU、内存使用情况进行动态监测

    (6) pstree显示进程树

    将进程间的关系以树结构的形式展示

    3. 计划任务的设定

    (1) at命令安排作业在某一时刻执行一次

    at命令指定时间的方式 绝对计时方法: hh:mm MM/DD/YY 相对计时方法: now+n minutes mow+n hours now+n days

    //5分钟后执行echo "hello" > /home/xtwy/hellohello.txt xtwy@ubuntu:~$ at now+5 minutes warning: commands will be executed using /bin/sh at> echo "hello" > /home/xtwy/hellohello.txt at> <EOT> job 1 at Tue Sep 1 07:21:00 2015 //查看进程是否启动 xtwy@ubuntu:~$ at -l 1 Tue Sep 1 07:21:00 2015 a xtwy

    (2)crontab周期性运行作业

    crontab 常用选项如下: -l   显示当前的crontab -r   删除当前的crontab -e   使用编辑器编辑当前crontab文件

    采用crontab -e 命令进入计划任务编辑状态,时间及脚本设置格式如下: 分钟    小时   天    月    星期   命令/脚本 例如在每周五下午6点关机,其命令设置如下: 分钟   小时    天   月   星期    命令/脚本 00    18   *    *    5    /usr/bin/shudown -h now 操作方法: //显示当前的计划任务 xtwy@ubuntu:~$ crontab -l no crontab for xtwy //进入计划任务编辑状态 xtwy@ubuntu:~$ crontab -e no crontab for xtwy - using an empty one Select an editor. To change later, run 'select-editor'. 1. /bin/ed 2. /bin/nano <---- easiest 3. /usr/bin/vim.basic 4. /usr/bin/vim.tiny Choose 1-4 [2]: 3 crontab: installing new crontab //设置完成后再进行计划任务的查看 xtwy@ubuntu:~$ crontab -l # m h dom mon dow command 30 9 * * 1-5 echo "test crontab" >> test.txt 通过下面方式进行查看计划: xtwy@ubuntu:~$ cd /var/spool/cron xtwy@ubuntu:/var/spool/cron$ ls atjobs atspool crontabs //crontabs目录只有root用户才能查看 xtwy@ubuntu:/var/spool/cron$ cd crontabs/ bash: cd: crontabs/: Permission denied xtwy@ubuntu:/var/spool/cron$ su root Password: root@ubuntu:/var/spool/cron# cd crontabs/ root@ubuntu:/var/spool/cron/crontabs# ls xtwy root@ubuntu:/var/spool/cron/crontabs# ls -l total 4 -rw------- 1 xtwy crontab 275 2015-09-01 17:45 xtwy root@ubuntu:/var/spool/cron/crontabs# cat xtwy # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.qUgCZF/crontab installed on Tue Sep 1 17:45:15 2015) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) # m h dom mon dow command 30 9 * * 1-5 echo "test crontab" >> test.txt

    添加公众微信号,可以了解更多最新Spark、Scala相关技术资讯

    相关资源:python入门教程(PDF版)
    最新回复(0)