
i为全局变量,A,B并发运行后:i的值不确定且不能重复
不存在 阻塞->运行 和 就绪->阻塞,阻塞必须通过就绪才能运行,就绪运行后才能进入阻塞。
更多状态如:新建状态和终止状态
和进程标识相关的成员变量,LINUX进程标识(PID,PPID父进程ID,PGID进程组ID),用户标识(UID用户ID,GID用户组ID)
在子进程中,pid = 0
在父进程中,pid > 0(等于子进程的ID)
出错,pid = -1
我们知道每个进程有唯一的ID,除此之外,每个线程还属于一个唯一的 进程组 。
一个 进程组 包含多个进程,其中一个进程被称为 进程组领导(process group leader)
进程组也有唯一的ID,这个id就等于领导进程的ID
讲进程组的重要性质前,先要讲一下 终端(terminal) 的概念。在有GUI界面前,我们
是通过 终端 和计算机交互,键盘和鼠标的输入都通过终端传递个计算机。
进程组的重要性质是同一进程组内的进程能够接收来自同一个终端的信号。
多个进程组成一个进程组,多个进程组组成进程会话(session)
创建会话的进程自动成为 进程领导(session leader)
一个会话可以关联一个 控制终端(controlling terminal) ,进程领导将会话与控制终端
关联,进程领导也被称为 控制进程(controlling process)
如果一个会话关联了一个控制终端,那么会话内的进程组可以分为两类:前台进程组和
后台进程组。
前台进程组只有一个,可以接收控制终端的输入,并向终端输出信息。
其他进程组都是后台进程组
ps 的父进程是331481,但 ps 是单独的进程组且为前台进程组,因为 TPGID 等于334140
是 ps 的进程组id,剩下的两个进程组都是后台进程
这一次, ps 仍然是单独的进程组,但已经不是前台进程组了,前台进程组是 bash 进程组331481
ps 和 cat 的父进程都是 bash 进程,而且两者同时属于一个前台进程组
常用命令——
1、date:打印或者设置系统的日期和时间
2、stty-a:可以查看或者打印控制字符(Ctrl-C、Ctrl-D、Ctrl-Z等)
3、passwd:用passwd-h查看
4、logout,login:登录shell的登录和注销命令
5、more,less,headtail:显示或部分显示文件内容
6、lp/lpstat/cancel,lpr/lpq/lprm:打印文件
7、chmodux:更改文件权限
8、rm-frdir:删除非空目录
9、cp-Rdir:拷贝目录
10、fgjobid:可以将一个后台进程放到前台
11、kill的作用:sendasignaltoaprocess、eg:kill-9发送的是SIG_KILL信号,具体发送什么信号可以通过mankill查看。
12、ps的用法:ps-e或ps-opid,ppid,session,tpgid,comm(其中session显示的sessionid,tpgid显示前台进程组id,comm显示命令名称)
扩展资料:
linux系统特点——
1、基本思想
Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、 *** 作系统、进程等等对于 *** 作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。
2、完全免费
Linux是一款免费的 *** 作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的 *** 作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。
3、完全兼容POSIX10标准
这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。
4、多用户、多任务
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权力,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。
5、良好的界面
Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行 *** 作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行 *** 作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。
6、支持多种平台
Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式 *** 作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux24版内核已经能够完全支持Intel64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。
linux查看用户所在组及权限的方法有:
ls -l /etc/group 查看所有的用户组及权限
ls -l /etc/passwd 查看所有用户及权限
groups 查看当前用户所在的组
扩展资料
linux通用命令
1、date :print or set the system date and time
2、stty -a: 可以查看或者打印控制字符(Ctrl-C, Ctrl-D, Ctrl-Z等)
3、passwd: print or set the system date and time (用passwd -h查看)
4、 logout, login: 登录shell的登录和注销命令
5、pwd: print working directory
6、more, less, head tail: 显示或部分显示文件内容
7、lp/lpstat/cancel, lpr/lpq/lprm: 打印文件
8、更改文件权限: chmod u+x
9、删除非空目录:rm -fr dir
10、拷贝目录: cp -R dir
11、fg jobid :可以将一个后台进程放到前台
Ctrl-z 可以将前台进程挂起(suspend), 然后可以用bg jobid 让其到后台运行
job & 可以直接让job直接在后台运行
12、kill 的作用: send a signal to a process eg: kill -9 发送的是SIG_KILL信号。。。 具体发送什么信号 可以通过 man kill 查看
13、 ps 的用法, ps -e 或 ps -o pid,ppid,session,tpgid, comm (其中session显示的sessionid, tpgid显示前台进程组id, comm显示命令名称。)
回复 5# 井蛙夏虫 但是决定进程 *** 作权限的是effective user/group ID,而不是real user/group ID啊,按这个思路来推断的话,应该是effective user ID所属的附加组但是又想不出可以用程序来验证的方法,网上也找不到对于supplementary group ID的详细描述,现在仍在继续google中。。
最近在解决探针获取Ruby应用服务器的内存使用的情况,将解决的思路总结一下,希望对此感兴趣的伙伴一起探讨。
先对比应用服务器: Puma 和 Passenger ,下面对比这2个服务器内存统计,
单进程模式:直接获取进程id: Processpid
cluster模式:以启动2个worker进程为例:
从上面截图可以看到,Puma启动后会出现3个进程:1个master进程和2个worker进程。
内存的使用情况(见 RSS 列):
而对于探针来说,一个探针实例是伴随进程一起启动的,也就说一个探针只能识别自己所在的进程id,那如何获取应用服务器使用的内存?我们用其中1个woker进程所在的进程组[ PGID ]看一下:(为啥不是父进程, 见下文Passenger)
这3个进程都在相同的进程组里,而且进程组号为master的进程id,那我们就可以用这个信息获取应用服务器的所使用的内存:
4累加进程组内进程内存和即为应用服务器使用内存:
启动Passenger后的Process信息:
对Passenger架构感兴趣的请移步到 这儿
查看一下worker所在进程组和父进程:
通过PPID可以看出
Passenger core —> Passenger AppPreloader —> Passenger RubyApp
三者为爷-父-子关系,当服务器请求量增大时 AppPreloader 会产生新的进程来响应请求,从而新的 RubyApp 进程的 PPID 即为 AppPreloader 的 PID ,这样看来就可以将同一个 PPID 的进程加起来得到应用服务器的内存?
由于Passenger会根据服务器的负载量动态调整进程数,当服务器请求量较小时,Passenger会kill多余的进程,会出现下面的情况:
AppPreloader 也被Passenger杀掉了。原 RubyApp 进程的 PPID 变成了1。这时如果服务器的请求量增大,应用服务器进程会成为这样:
Passenger core 产生新的 AppPreloader 进程,并且 AppPreloader 产生新的 RubyApp 进程,这时如果只用 PPID 统计应用服务器内存就会不准确,所以要统计Passenger的使用的内存还得通过累加在同一个进程组( PGID )的所有进程使用的内存和得到。
由于 Unicorn 和 Rainbows 都与Puma的cluster模式[master+worker模式]类似,内存统计的方式可以参考上文的Puma。
由于 Thin 启动多个server后没有类似的特点,上面方法不适用于Thin,有好方法的伙伴们可以告知:smile:
在解决探针统计应用服务器的内存问题上,摸索出了上面的一条路子,如果小伙伴们有其他更好的方式,可以一起探讨一下。
很简单的几句代码就可以实现了 楼主记得加分哦
在界面上画一个列表框就行了,把虚线里的代码复制到易语言里
====================================================================
版本 2
支持库 eAPI
程序集 窗口程序集1
子程序 __启动窗口_创建完毕
局部变量 进程, 进程信息, , "0"
局部变量 计次, 整数型
进程 = 取系统进程列表 ()
计次循环首 (取数组成员数 (进程), 计次)
列表框1加入项目 (进程 [计次]进程名称, )
计次循环尾 ()
====================================================================
以上就是关于进程管理(1)全部的内容,包括:进程管理(1)、进程组概念简单介绍、linux必学的60个命令_linux必学的60个命令怎么读起来简单等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)