我在前台运行了一个子进程,他的父亲已经离开了。
如果父进程已退出,则proc/$pid/stat文件不再包含父pid,并且它将显示1而不是原始父pid。
linux$cat /proc/6267/stat
6267 (test3.sh) S 1 6265 ......
# ^
# |
# I expected to get the origin parent pid but I get 1
要快速再现这种行为,我们可以使用以下脚本
test2.sh
#!/bin/sh
echo "test2=$$"
从阅读文档和在线上看,大多数人都说要在linux中杀死一个进程,只需要命令kill "pid“。
For example to kill memcached would be kill $(cat memcached.pid)
但对于我试图杀死的几乎每个进程,包括上面的进程,这都是不起作用的。我设法用一个不同的命令让它工作:
ps aux | grep (process name here)
无论出于什么原因,该命令都会得到一个不同的pid,这将在终止程序时起作用。
我想我的问题是,为什么会有不同的pid?id的意义不是唯一的吗?为什么在使用aux | grep命令时,celery、m
我在Linux上工作,我在Linux终端上执行了for循环,如下所示:
for i in `cat fileName.txt`
do
echo $i
vim $i
done
fileName.txt是一个包含我在vim编辑器中一个接一个打开的大量文件条目的文件。现在,我必须跳过打开中间的其他文件。(即,我必须中断for循环)。有什么建议如何获得运行for循环的PID吗?然后杀掉同样的人。提前谢谢。
是否有Linux API可以返回拥有打开套接字文件描述符的进程的PID/PID?目前,我看到的唯一方法是遍历每个PID的/proc/PID/fd,并通过inode派生套接字fd。
然而,我还没有看到任何syscall/API可以做到这一点,例如:
int get_pids_for_socket(int sock_fd, int pids[])
(当然是非常粗略的想法)。为什么这样的API不存在,或者我看起来不是很好?
谢谢。
我有一个使用shell脚本(monitoring.sh)调用的c++文件。
cfile="/home/workspace/printprocess/print"
cmp=start
if [ $1 = $cmp ]
then
$cfile
fi
当我运行./monitoring.sh start时,它工作得很好
现在,我想在这个shell中创建另一个shell来存储它的pid,另一个shell应该具有正在运行的父shell的pid。
它是这样的:
if [$1 = $cmp ]
then
$cfile
cat > pid_no.sh <<EOF
w
linux命令"lsof“返回正在访问的文件,我在shell中尝试使用vi打开一个文件,用kwrite打开另一个文件,然后返回并得到vi的进程,但没有kwrite进程,如下所示
[linux@localhost shell_ex]$ lsof +d .
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 3458 linux cwd DIR 253,2 50 953101 .
bash 3747 linux cwd DIR 253,2 50 95
我目前正在用JAVA构建一个应用程序,其中只能有一个执行。因此,我目前正在使用一个锁文件,在其中写入当前执行的PID。
因此,每当该应用程序启动时,它都会打开文件(如果存在的话),并尝试检测写入文件中的PID是否实际运行。
这可以防止我的应用程序在解锁文件之前崩溃的问题。
我需要在windows (XP、7或8)和linux (所有用户都是基于debian的发行版)上工作。
这里有一些代码可以让您更好地了解我想要做的事情:
//get the PID from the file
int pidValue = new FileReader(file).read();
//get the OS
获取和使用真正的PID安装的程序,如xed或Firefox是很好的p.e。在以下道路上:
#!/bin/bash
xed & PID=$! # Start xed and get PID for later
echo "$PID"
Running the xed some time
kill -15 "$PID" # Soft Kill of xed
获取便携式TOR浏览器的PID返回一个PID,该PID看起来不是来自TOR浏览器(可能来自便携式TOR浏览器文件夹中的一个Tor帮助脚本)
其结果是。如果跟随错误的Tor PID,TOR浏览器就不能关
我在JVM中运行了Cobertura工具jar。当我在运行应用程序的Windows中按下Ctrl时,JVM结束和Cobertura结果被成功地刷新到cobertura.ser文件。但是我需要用命令/工具(不是Ctrl)来停止这个JVM,类似于Linux中的“软杀伤”(没有"-9“参数的”杀死“命令)。当我使用"taskkill /PID 1234“时,它写道:
D:\>taskkill /PID 1234
ERROR: The process with PID 1234 could not be terminated.
Reason: This process can o
我试图使用C中的fork()函数来处理Linux中的多个进程,这是我的代码:
p1 = fork();
if(p1 != 0){
p2 = fork();
}
printf("My PID is %d\n",getpid());
printf("My parent PID is %d\n",getppid());
现在,假设父进程ID为100,两个子进程(p1,p2) ID为101 & 102,init进程PID为0,我的预期输出为:
My PID is 100
My parent PID is 0
My PID is 101
My par