Questions tagged «process»

进程是正在执行的计算机程序的实例。

5
有没有办法听过程?
我想知道是否有一种方法可以监听Linux和UNIX中的进程-何时结束以及process(script)的退出代码是什么。 我不想编写将运行X几秒钟的脚本,并检查ps -ef | grep PID该进程是否仍然存在。我想知道该进程是否可以在结束时通知我以及退出代码是什么。

1
使用网络接口查找流程
我正在尝试找到一种安全关闭网络接口的方法,即不打扰任何进程。为此,我需要找出当前正在使用该接口的进程。工具喜欢ss,netstat或者lsof是有帮助的显示哪些进程打开插座,但他们不显示wpa_supplicant,dhcpcd,hostapd和其他人。 有没有一种方法可以以一般方式检测这些过程?它可能不适合dhcpcd,因为它只是一个不时打开套接字的程序,但是我假设wpa_supplicant和hostapd会对可检测到的接口“执行某些操作”,并且可能还会导致相关的PID。

1
所有PID的总和是否为系统总时间?
为了衡量用户的总CPU时间,我使用了以下字段中的“ utime”字段/proc/[pid]/stat: utime %lu Amount of time that this process has been scheduled in user mode, measured in clock ticks (divide by sysconf(_SC_CLK_TCK). This includes guest time, guest_time (time spent running a virtual CPU, see below), so that applications that are not aware of the guest time field do not …
9 process  cpu  proc 

2
我不小心暂停了Linux显示过程
安装Linux Mint 19之后,我想检查vsinc如何影响Linux中的fps,因此我输入了以下命令: CLUTTER_SHOW_FPS=1 cinnamon --replace 一段时间后,我不小心按下Ctrl+ Z并暂停了该过程。立即,我的Bash shell和除鼠标光标以外的所有内容都冻结了,所以我无法键入fg命令。 有没有一种方法可以在不重新启动的情况下取消暂停该进程,我是否应该在下次使用Ctrl+ C正确退出该进程?
8 process 

1
Unix管道另一端的进程名称?
如果两个过程通过管道连接, > cmd1 | cmd2 有什么方法cmd1可以找出管道另一边的过程名称(或PID cmd2)? 另外,反之亦然,是否有任何方法cmd2可以获取的名称/ PID cmd1? 我知道isatty(3)要检查输出是否到达终端(或输入来自终端),所以我想知道是否有办法找到更多有关另一端的信息。
8 linux  process  pipe  proc 


3
当您用尽PID时会发生什么?
这是一个纯粹的学术问题,因为这永远不会发生。 如果将PID存储为pid_t类型,而不是某些任意精度类型,则一次可以存在的PID数量受到限制。PID溢出时是否存在定义的行为? 65536进程会杀死/ sbin / init并引起内核崩溃吗?还是有一些安全措施?
8 process  proc 

1
将所有进程的已交换内存拉出交换
在不写入磁盘的情况下,如何快速将所有进程的已交换内存从交换中拉出? 关于这个问题的背景很琐碎,因为系统性的问题是其他各方正在处理,这个问题是必须的。但是,现在,我遇到一个问题,即当负载和IO等待非常高时,我经常不得不释放OpenVZ节点上的交换空间。 交换通常主要由少数几个在单个容器上运行的MySQL和蛤processes进程消耗。重新启动这些服务可以释放交换并解决节点上的问题,但是出于明显的原因,这是不希望的。 我正在寻找一种方法,可以在节点过载时快速从那些进程中释放掉交换,并且需要比当前方法更快的操作: unswap(){ [[ $1 && $(ls /proc/$1/maps) ]] && ((gcore -o /tmp/deleteme $1 &>/dev/null; rm -fv /tmp/deleteme.$1)&) 2>/dev/null || echo "must provide valid pid";};unswap 此核心转储会强制访问所有ram,从而完成了将其退出交换的工作,但是我尚未找到避免将其写入文件的方法。另外,如果我可以隔离当前交换的地址范围并将该部分转储到/ dev / null中,则看起来该过程会更快,但是我还没有找到一种方法来做到这一点。 这是一个巨大的节点,因此通常的交换/交换方法非常耗时,并且再次,该节点的配置不受我的控制,因此解决根本原因并不属于这个问题。但是,如果能洞悉我如何迅速释放掉大部分交换而又不中断/重启任何事情,将不胜感激。 环境:CentOS 6.7 / OpenVZ 对于以后可能会迷失方向的任何人的更新: 使用Jlong的输入,我创建了以下函数: unswap(){ (awk -F'[ \t-]+' '/^[a-f0-9]*-[a-f0-9]* /{recent="0x"$1" 0x"$2}/Swap:/&&$2>0{print recent}' /proc/$1/smaps | while read …

1
/ proc / pid / maps中的共享库映射
为什么/proc/pid/maps在同一个库中包含一些记录?这是一个例子: 7fae7db9f000-7fae7dc8f000 r-xp 00000000 08:05 536861 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 7fae7dc8f000-7fae7de8f000 ---p 000f0000 08:05 536861 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 7fae7de8f000-7fae7de97000 r--p 000f0000 08:05 536861 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 7fae7de97000-7fae7de99000 rw-p 000f8000 08:05 536861 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 这是什么意思 ?

1
什么是/ proc / <pid> / net / dev?
我对每个进程的网络I / O计数器都感兴趣,就像其中的那些计数器一样/proc/net/dev,发现了我认为的内容/proc/&lt;pid&gt;,即/proc/&lt;pid&gt;/net/dev。但这似乎太简单了,因为它们包含与系统相同的计数器。 如果我在系统之间进行比较,则&lt;pid&gt;得到相同的计数器*。因此,这使我想知道它应该代表什么?还是仅/proc/net/dev通过将权限设置为/proc/net/&lt;pid&gt;/dev而不是全局设置来允许特定进程读取的方式? man proc没有对此进行记录,并且http://man7.org/linux/man-pages/man5/proc.5.html也没有 发行版:CentOS 7.1 w /内核 3.10.0-229.el7.x86_64 *diff &lt;(cat /proc/&lt;pid&gt;/net/dev) &lt;(cat /proc/net/dev)

2
如何确定流程正在执行哪些指令?
我知道strace和ltrace,但这仅告诉我进程正在执行的系统调用和库调用。我想确切地知道流程正在执行什么指令。可能是汇编,也可能是C与汇编之间的某种中间立场。假定二进制文件未使用调试符号进行编译,因此更可能选择第一个选项。 用例:进程似乎已挂起,strace或ltrace没有输出。确定过程是否在做“某事”。我意识到这可能很难确定,因为我想这类似于解决暂停问题。但是,有可能收集有用的数据。 第二个用例:好奇心。将整个汇编指令列表转储到文本列表中会很有趣。 我的猜测是我可以使用gdb来执行此操作,但不确定如何执行此操作,因为这与调试我编写的程序有关,而与使用gdb来检查正在运行的进程的运行状况有关。 操作系统是CentOS 6。

4
退出外壳程序后,chdir(<directory>)不会更改目录
我想制作一个简单的C程序来更改我的项目目录。其内容如下: #include &lt;unistd.h&gt; int main() { chdir("/home/enedil/projects/algo"); return 0; } 我用以下命令编译了它(pro.c是它的文件名): gcc pro.c -o /usr/local/bin/pro 没有错误也没有警告。但是,当我运行它,它并不会改变目录。为什么?
8 process  c  cd-command 


3
为什么pidof和pgrep的行为有所不同?
我有一个初始化脚本,/etc/init.d/myservice用于初始化这样的服务: ... start() { ... daemon /usr/sbin/myservice ... } stop() { ... pgrep myservice pidof myservice ps -ef | grep myservice ... } 当我尝试停止该服务时,这是输出: 10000 10001 10000 root 10000 1 0 09:52 ? 00:00:02 /usr/sbin/myservice root 9791 9788 0 10:06 pts/1 00:00:00 /bin/sh /sbin/service myservice stop root 10001 9791 1 …

3
我可以通过管道将任意两个进程互相连接吗?
在这个页面,从设计和4.4BSD操作系统的实现,据说: 管道和套接字之间的主要区别在于,管道需要一个公共的父进程来建立通信通道 但是,如果我记录正确,则创建新流程的唯一方法是fork使用现有流程。因此,我真的看不到两个进程如何没有一个共同的祖先。那么,我认为任何一对进程都可以通过管道相互传递对吗?
8 linux  process  pipe  bsd  fork 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.