如果我运行该命令 nohup ./run > /dev/null 2>&1 & disown 在我的terminal中,我find了一些我认为是PID的[1] 1234 。 但是,当我在Perl中运行以下代码时,它会返回关于disown被定义的错误或错误,但这不是重点。 当我删除disown ,terminal返回相同的东西,但Perl什么也不返回。 它分配给的variables只是空白。 my $command = `nohup ./run > /dev/null 2>&1 &`; print("a " . $command); // "a " to check if it's actually printing anything. 输出: a 预期产出: [1] 1234 如何让Perl显示我可以parsing的命令的PID @ar = split(/\s+/, $process); $pid = $ar[1]; 在我以前的问题中,由另一个Stackoverflow用户提供。
我用rsnapshot做了备份,它创build了一个带有进程pid的锁文件。 现在我想从rsnapshots备份进行备份,所以我正在寻找一种方法来为第二个/外部备份创build这个锁文件。 shell脚本应该是这样的: 检查是否存在一个locking文件,如果是的话,等待,再试一次(我真的这样做了一段时间真正的循环) 获取此shell脚本的pid并将其保存为rsnapshotlocking文件 启动第二个/外部备份 删除锁文件 如何获得PID并将其保存为rsnapshotlocking文件?
有几个进程在Docker容器中运行,它们的PID在容器名称空间中是隔离的,有没有办法找出Docker主机上的PID是什么? 例如,在Docker容器中运行Apache Web服务器(我使用Docker Hub的 Apache + PHP镜像),而Apache在启动时在容器内创build更多的工作进程。 这些工作进程实际上是处理传入的请求。 要查看这些进程,我在Docker容器中运行pstree : # pstree -p 1 apache2(1)-+-apache2(8) |-apache2(9) |-apache2(10) |-apache2(11) |-apache2(12) `-apache2(20) 父级Apache进程在容器进程名称空间内的PID 1上运行。 但是从主机的angular度来看,也可以访问它,但是主机上的PID是不同的,可以通过运行docker compose命令来确定: $ docker inspect –format '{{.State.Pid}}' container 17985 从这里我们可以看到容器进程名字空间中的PID 1映射到主机上的PID 17985。 所以我可以在主机上运行pstree来列出Apache进程的subprocess: $ pstree -p 17985 apache2(17985)─┬─apache2(18010) ├─apache2(18011) ├─apache2(18012) ├─apache2(18013) ├─apache2(18014) └─apache2(18164) 从这个angular度来看,我们假设容器中的PID 1如何映射到主机上的PID 17985,它也映射: 主机上的PID为18010的容器中的PID 8,以及 PID 9至PID 18011; PID 10到PID […]
我在基于* nix的操作系统上运行,并有一个脚本同时启动多个进程。 我的主要目标是同时启动这些进程,并为每个进程收集返回的退出状态。 我发现使用wait(pid)可以实现这一点,因为所有的subprocess都由父进程拥有。 但是,我担心的是,一旦subprocess(启动的并发进程之一)完成,它的PID将被释放,并可供在系统内循环使用。 所以我想问题是,如果一个父进程同时启动了多个subprocess,那么完成的subprocess的PID会在父进程完成之前提供给系统进行回收? 如果是这样,我怎样才能最好地获得每个subprocess的退出状态? 下面的bash脚本示例: local file=$1 local count=0 <files are split; and suffixed with aa,ab,ac,ad> /home/text/concurrencyTest.sh $file-aa >> /home/text/$file-aa.log 2>&1 & /home/text/concurrencyTest1.sh $file-ab >> /home/text/$file-ab.log 2>&1 & /home/text/concurrencyTest2.sh $file-ac >> /home/text/$file-ac.log 2>&1 & /home/text/concurrencyTest3.sh $file-ad >> /home/text/$file-ad.log 2>&1 & for job in `jobs -p` do echo "Job: $job" wait "$job" rc=$? […]
如何从xid(X窗口标识符)获取pid? 如何获得给定PID的xid列表? (假设所有应用程序都以DISPLAY=:0运行,没有使用networking透明度) 我期待的是: 挖掘/ proc / $ pid / fd /来跟踪到X服务器的连接 按照这个连接,在/proc/`pidof X`/fd挖掘 挖掘X内部,因为它应该知道如何将连接映射到窗口。
如何在不使用系统调用的情况下在Linux上使用C ++获取名为abc的服务的PID? 我将不胜感激您提供的任何示例。
我试图在Linux中使用fork()函数在C中使用多个进程,这是我的代码: p1 = fork(); if(p1 != 0){ p2 = fork(); } printf("My PID is %d\n",getpid()); printf("My parent PID is %d\n",getppid()); 现在让我们假设父进程ID是100,并且两个subprocess(p1,p2)ID是101和102,并且init进程PID将是0,我的预期输出是: My PID is 100 My parent PID is 0 My PID is 101 My parent PID is 100 My PID is 102 My parent PID is 100 相反,我看到不同的东西,两个subprocess具有相同的PPID,但第一个进程有一个不同的PID。 这里是我得到的示例输出: My PID is 3383 My […]
简单的问题,但我还没有find答案。 给定一个特定的PID,我可以确定这个过程是否有效? 我正在研究一个C程序,这使我疯狂。 我读了kill(pid,0)会执行这个技巧的地方,但是无论进程是否正在运行(或者看起来如此),它都会返回0。 任何提示? 附加信息:我感兴趣的过程是由fork()发起的一个孩子。 subprocess到达语句exit(0).时应该终止exit(0). 至less这是我的预期…显然不是。 更多附加信息:使用fork()创build的subprocess执行一个系统命令,根据最终用户的不同,系统命令可能会有所不同。 整个事情是批处理过程的一部分,所以没有机会跳进去修理。 此subprocess可能必须执行的任务之一是build立到远程服务器的连接,以便在那里存储一些文档。 这可能是另一台Linux机器,或者它可能是一个Win Server(或者别的什么)。 为此,我不想等待subprocess。 我希望父母等待一段特定的时间(比如10秒),然后杀掉subprocess,如果到那时还没有完成的话。 同理,如果孩子在3毫秒内完成任务,我不希望父进程等待10秒钟。 看来我不是第一个有这个问题的人。
我有一个关于Linux pid的问题。 如何在同一组中获得pids? 在Linux中使用'ps'命令来获得所有的pid或pgid似乎很容易,但是如何获得属于同一个组的pid,换句话说,如何获得同一个程序的pid? 有人请给我一些帮助吗? 谢谢!
fork()生成的subprocess是否可以有一个小于父进程的进程id(没有超过最大限制)? PID通常是下一个可用值,但无论如何可能小于父母的PID?