进程查看机制

ps (process state缩写)命令是进程查看命名,用于Linux系统中所有的进程查看。在当前文件夹下执行如下命令ps,显示:

  PID TTY          TIME CMD7784 pts/1    00:00:00 zsh7813 pts/1    00:00:00 ps

一般可以使用ps -aux以BSD风格显示进程所有数据,各个字段的意义:


其中STAT字段的意义如下:
注意,ps命令不是动态更新的,即其输出的只是执行完命令瞬间后,各个进程的状态;如果要观测动态的,需要执行top命令。

pstree命令用于树型显示进程的父子关系。

Linux系统中,一个进程是程序的一次执行。一个进程由三个部分组成:

  • 程序的读取上下文,表示程序读取的执行状态
  • 程序当前的执行目录
  • 程序服务的文件和目录
  • 程序的访问权限
  • 内存和其他分配给进程的系统资源

程序分为代码段、数据段和堆栈段。代码段存储程序代码的数据,假设多个进程共享一个程序,它们就可以使用同一个代码段。数据段存放全局变量、常数和动态数据分配的数据空间。堆栈段分配子程序的返回地址、子程序的参数和局部变量,堆栈段包括在程序控制块PCB中。

进程管理

进程可以手工启动或者调度启动。手工启动直接在shell中执行,shell会等待进程执行完毕。命令后添加一个&符号,表示后台启动一个程序。终端前台程序,需要Ctrl+C组合。Ctrl+Z是把当前进程挂起,之后输入bg命令,可以转换到后台。如果shell中有运行的后台程序,那么输入fg可以把后台转前台(适合只有一个后台的情况)。

显示的意义是:<任务编号> <当前进程> <进程状态> <命令内容>

jobs命令显示当前shell被挂起的进程和后台进程的状况。有三个参数:

  • -l:显示进程的PID
  • -n:最后一次通知后停止或退出的作业
  • -p:显示所选定的作业的进程组引导符的进程标识

fg把后台作业移动到前台,如果没有参数,则默认把最近挂起的一个提到前台,用法是

fg JobID

其中,JobID的意义可以是:

  • 进程的标识号
  • %Number 通过作业编号引用作业
  • %String 引用名称以特定字符串开头的作业
  • %?String 引用名称中包含特定字符串的作业
  • %+ OR %% 引用当前作业,-表示前一个作业

bg参数的用法同fg

信号

Linux有很多不同类型的信号,可以使用kill -l来显示,常见的信号的意义:
Linux的kill命令用来向进程发送信号。常用的用法是:

kill -SIGSTP 23940

如果强制杀死一个进程,可以使用:

kill -9 PID

PID是特定的进程号,-9SIGKILL。只要执行该指令,进程立刻退出。

Linux的init进程

init进程的PID是1,这是操作系统的第一个进程,主要用来执行初始化脚本和监视进程。注意/etc/inittab这个文件,这是init进程用于初始化的配置文件(貌似Ubuntu系统没这个)。。

基本格式如下:

id:runlevels:action:process
  • id 配置行的唯一标识
  • runlevels配置试用的运行级别,可以有多个级别,也可以填入多个级别:
    - action可以有多个选项:

    - process:为init执行的进程,这些进程保存在/etc/rc.d/rcX中,X表示运行级别,rc程序接受X参数。这些程序都是链接符号。具体可以参考有关资料关于怎样配置init进程。

任务调度系统

一般涉及到crontab命令和at命令。crontab命令用于调度重复性任务,而at命令用于在特定的时间调度单个系统任务。一些自动化的脚本任务,可以通过这两个命令执行。

crontab命令不同,at文件只执行一次任务,之后便从目录中删除这些文件。at命令在/var/spool/cron/atjobs目录中存储要执行的命令或者脚本,以及当前环境变量的副本。at作业文件名是一个长数字,用于指定该文件在at队列中的位置,以.a问扩展名。cron进程在启动时检查at作业,并贞听是否提交了系作业。cron进程执行at作业后,将从atjobs目录中删除at作业。

具体关于cronat的用法,可以查阅详细的资料,不在赘述。

描述进程的/proc文件系统

Linux下一切介文件。/proc是一个虚拟文件系统,这是为了内核和内核模块向进程发送消息用的。该系统是用户和内核之间的接口,可以使用ls /proc查看文件系统的内容。有一些常用的文件:

具体关于进程文件系统的信息,可以参考其他资料。

Linux Shell编程笔记8 进程相关推荐

  1. linux+shell+func,Linux shell编程笔记总结

    Linux Shell学习笔记简介 Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称.shell是用户和Linux内核之间的接 ...

  2. Linux Shell编程笔记9 SSH和Screen工具

    SSH SSH的作用是对数据进行加密处理.在互联网上直接使用明文传输是不安全的.中间人攻击就是通过窃取发送的明文数据,然后进行攻击.一个较为安全的方式是,把数据进行加密传输,这样使得攻击者获取到的数据 ...

  3. Linux Shell编程笔记10 Shell数组的补充

    数组可以通过下标或值进行索引,如果不存在,则值为空.比如: #!/bin/bash arr[0]=hello echo ${arr[1]} # 输出空内容 使用@输出所有数组的内容,使用#和@输出元素 ...

  4. Linux Shell编程笔记7 awk的应用

    简介 awk是用于基本文本处理的工具.一般遇到复杂格式等的处理问题时,应该优先想到使用awk.比awk更加高端的,还有perl语言,它专门用于文本处理.python也有丰富的文字处理功能,但是这是它的 ...

  5. Linux Shell 编程笔记

    2019独角兽企业重金招聘Python工程师标准>>> 常用命令 echo [STR] # 打印显示字符串 printf '[FORMAT]' [ARG] #格式化输出(不支持数据流 ...

  6. Linux Shell编程笔记6 sed流编辑器

    简介 sed是一个流编辑器,它会读取文件流,以行为单位进行处理.sed会按照顺序执行对每一行执行命令.sed把每一行结果写入标准输出,不修改任何输入文件.一般来说,文件流需要处理每一行的时候,需要借助 ...

  7. Linux Shell编程学习笔记(3)

    Linux Shell编程学习笔记(2015-7-19) 分类:linux shell 一:位置参数和特殊变量   什么是位置参数?   位置参数也叫位置变量,是运行shell脚本程序时,命令行she ...

  8. 《Linux Shell编程学习笔记之一》

    <Linux Shell编程学习笔记之一> 前言 由于自己一直在Windows上面编程,用linux用的比较少,学习linux还是本科大二学的一点点知识.因此自己就准备花点时间来熟悉下li ...

  9. Linux Shell 编程学习笔记(1)

    Linux Shell编程学习笔(2015-7-11) 一:Shell程序运行的三种方法 赋予程序文件可执行权限,直接运行   比如:chmod a+x shell.sh 使用命令解释器(即shell ...

最新文章

  1. 独家 | CycleGAN之美 赛马翻译成斑马背后的直觉和数学(附论文)
  2. 数字图像处理目录列表
  3. 字节输入流一次读取一个字节的原理
  4. Merge Two Sorted Lists LeetCode
  5. c# oldb连接_(转)C#连接OleDBConnection数据库的操作
  6. 拯救普通人周报焦虑,一个自动化报表工具就能实现
  7. 30篇记录==一个月了~
  8. 2 分钟玩转 Apizza,轻量级 API 工具
  9. 接口测试用例设计 - 精简版
  10. 数据结构链表(C语言实现)
  11. python_根据出生年份算年龄
  12. 饭谈:失眠,还有梦魇,第二天要上班应该怎么办?
  13. 石头科技:研发实力和过硬品质 助力扫地机器人产业升级
  14. 软件测试应该何时介入项目?
  15. 实现数字电视机顶盒画面的纯键盘和遥控操作网页
  16. 用计算机控制食品生产论文,计算机控制系统论文范文2篇
  17. 【程序人生】那些工作之外的技术挣钱方式
  18. CCF/CSP 201709-2 公共钥匙盒的求解 C++版
  19. Codeforces gym 100685 C. Cinderella 水题
  20. 蔚来事故背后真相:Pilot只是舒适性功能,NOP仅是公开测试版本

热门文章

  1. 计算机算法设计与分析 最长递增子序列
  2. Java实验8 T1.编程包含一个标签和一个按钮,在“你好”和“再见”之间切换
  3. 自动驾驶——多目标跟踪模块的学习笔记
  4. Java构造函数执行顺序
  5. Linux中shell提示符定制
  6. 命令行模式下编译多个C/C++源文件
  7. GTK+图形化应用程序开发学习笔记(三)—窗体
  8. JS控制图片滚动的效果
  9. 培养创造性思维20个技巧
  10. vue动态添加style样式