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

本节主要内容

  1. 进程管理简介
  2. 进程管理常用命令
  3. 计划任务

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,作为前台进程执行
[email protected]:~# 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

//加&符号表示作为后台进程进行执行
[email protected]:~# 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 修改进程的优先级

[email protected]:/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
//重新指定权限
[email protected]:/home/xtwy# renice -5 12340
12340: old priority 19, new priority -5
//子进程的权限随父进程权限改变而改变
[email protected]:/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命令终止当前进程执行

[email protected]:/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
[email protected]:~$  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
//查看进程是否启动
[email protected]:~$ 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相关技术资讯

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-02 05:17:37

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

Spark修炼之道(基础篇)——Linux大数据开发基础:第一节、Linux介绍、安装及使用初步

本节主要内容 Linux简史 Linux特点 Ubuntu Linux安装 Linux使用初步 1. Linux简史 要讲述大名鼎鼎的Linux,必然要先从UNIX系统谈起,下面这幅图给出了Unix系统的进化图: 图片来源:http://baike.baidu.com/link?url=QfoqWtWGs-BjpnfEy_AUk7Bm3XHuf6JbN92HCOoUBfFfj8BuSDkbwmldtmUEmGRDUwqsQMIV4jCKHvdkSPr3Lq 从进化图中可以看到,目前所有的主流操作

Spark修炼之道(基础篇)——Linux大数据开发基础:第十二节:Shell编程入门(四)

本节主要内容 shell脚本调试 shell函数 shell控制结构初步 1. shell脚本调试 当脚本出错时,需要对脚本进行调试,学会脚本调试是每个linux系统使用者必备技能.shell脚本调试无需任何额外的工具,只需要要在脚本文件前加-x选项即可,创建debug.sh文件,内容如下: #!/bin/bash #Filename: debug.sh echo "scripting" echo "debuging" ls + 使用bash -x 命令进行脚本调试

Spark修炼之道(基础篇)——Linux大数据开发基础:第五节:vi、vim编辑器(二)

本节主要内容 缓冲区的使用 文件的存盘与读盘 文本查找 文本替换 作者:周志湖 微信号:zhouzhihubeyond 网名:摇摆少年梦 1. 缓冲区的使用 在利用vim进行文本编辑时,编辑修改后的文本不会立即保存到硬盘上,而是保存在缓冲区中,如果没有把缓冲区里的文件存盘,原始文件不会被更改.vim在打开文件时将文本内容读到缓冲区中,在进行文本编辑时,修改的文本保存在缓冲区,此时硬盘上的原文件不变.下面让我们来演示一下缓冲区的使用. 假设采用vim 同时打开两个文本文件: [email prot

Spark修炼之道(基础篇)——Linux大数据开发基础:第六节:vi、vim编辑器(二)(转载)

转自云栖社区: https://yq.aliyun.com/articles/60354?spm=5176.8251999.569296.36.siyXRn 周志湖 2015-08-25 21:23:00 浏览305 评论0 摘要: 本节主要内容 缓冲区的使用 文件的存盘与读盘 文本查找 文本替换 作者:周志湖 微信号:zhouzhihubeyond 网名:摇摆少年梦 1. 缓冲区的使用 在利用vim进行文本编辑时,编辑修改后的文本不会立即保存到硬盘上,而是保存在缓冲区中,如果没有把缓冲区里的文

大数据开发基础知识

日志聚合与分析 日志聚合的作用就在于可以把来自不同服务器上不同应用程序产生的日志聚合起来,存放在单一的服务器上,方便进行搜索和分析.在日志聚合方面,已经有不少成熟的开源软件可以很好的满足需求.本文中要介绍的是 logstash,一个流行的事件和日志管理开源软件.logstash 采用了一种简单的处理模式:输入 -> 过滤器 -> 输出.logstash 可以作为代理程序安装到每台需要收集日志的机器上.logstash 提供了非常多的插件来处理不同类型的数据输入.典型的包括控制台.文件和 sys

转:Hadoop大数据开发基础系列:七、Hive基础

https://blog.csdn.net/hehe_soft_engineer/article/details/102820968 原文地址:https://www.cnblogs.com/ambdyx/p/11779609.html

Spark修炼之道——Spark学习路线、课程大纲

课程内容 Spark修炼之道(基础篇)--Linux基础(15讲).Akka分布式编程(8讲) Spark修炼之道(进阶篇)--Spark入门到精通(30讲) Spark修炼之道(实战篇)--Spark应用开发实战篇(20讲) Spark修炼之道(高级篇)--Spark源代码解析(50讲) 部分内容会在实际编写时动态调整.或补充.或删除. Spark修炼之道(基础篇)--Linux大数据开发基础(15讲). Linux大数据开发基础--第一节:Ubuntu Linux安装与介绍 Linux大数据

2017最新大数据零基础视频教程下载

2017零基础大数据就业课程(全网最全,856课时) 课程观看地址:http://www.xuetuwuyou.com/course/181 课程出自学途无忧网:http://www.xuetuwuyou.com 本套课程是风舞烟老师团队历时四个月打造的全网最全的一套大数据就业课程.可以说是完全0编程基础起步,一部到就业!课程分2大模块,14个课程,65章,共计856课时! 课程大纲: 一.Java模块课程 课程一.[大数据必知必会]- Java负基础扫盲篇 01.Java基础语法.变量.数据类

大数据开发之常见九种数据分析方法

今天给大家分享一篇关于大数据开发常见的9种数据分析方法,首先数据分析是从数据中提取有价值信息的过程,过程中需要对数据进行各种处理和归类,只有掌握了正确的数据分类方法和数据处理模式,才能起到事半功倍的效果,以下是数据分析员必备的9种数据分析思维模式: 1.分类 分类是一种基本的数据分析方式,数据根据其特点,可将数据对象划分为不同的部分和类型,再进一步分析,能够进一步挖掘事物的本质. .在入门学习大数据的过程当中有遇见学习,行业,缺乏系统学习路线,系统学习规划,欢迎你加入我的大数据学习交流裙:529