你能从进程 ID 获得完整的命令行(包括命令行参数等)吗?
Can you get full command line from process ID (including command line arguments, etc)?
此问题是对此处提出的问题的补充:https://unix.stackexchange.com/questions/163145/how-to-get-whole-command-line-from-a-process。在我的系统上,以下命令会生成 PID(如预期的那样):
CUDA_VISIBLE_DEVICES=4,5 python3 main.py 1> out.txt 2> err.txt &
现在,上面堆栈交换link中的方法提供了很多解决方案。但是,在尝试这些解决方案时,我只收到以下信息:
python3 main.py
有没有办法return整个命令行"CUDA_VISIBLE_DEVICES=4,5python3main.py1>out.txt2>err.txt &", 而不仅仅是部分 "python3 main.py"?
没有
假设您在 Linux 系统上,您可以找到各个位,但不能将它们放在一起。
还假设进程的 PID 在 $pid
CUDA_VISIBLE_DEVICES=4,5
变量被添加到 python 命令的 environment 中。您可以在 /proc/$pid/environ
中找到它,但您无法分辨哪些变量是在命令行中指定的:用户可能已经编写了
export CUDA_VISIBLE_DEVICES=4,5
python3 main.py 1> out.txt 2> err.txt &
文件重定向在 /proc/$pid/fd
:
中可用
/proc/$pid/fd/1
是一个符号 link 到 out.txt
/proc/$pid/fd/2
是一个符号 link 到 err.txt
我不知道如何判断一个进程是否在后台 运行。
因为您只对环境感兴趣:bash
declare -A environ
while IFS='=' read -r -d '' var value; do
environ["$var"]="$value"
done < /proc/$pid/environ
echo "process has CUDA_VISIBLE_DEVICE value ${environ[CUDA_VISIBLE_DEVICE]}"
此问题是对此处提出的问题的补充:https://unix.stackexchange.com/questions/163145/how-to-get-whole-command-line-from-a-process。在我的系统上,以下命令会生成 PID(如预期的那样):
CUDA_VISIBLE_DEVICES=4,5 python3 main.py 1> out.txt 2> err.txt &
现在,上面堆栈交换link中的方法提供了很多解决方案。但是,在尝试这些解决方案时,我只收到以下信息:
python3 main.py
有没有办法return整个命令行"CUDA_VISIBLE_DEVICES=4,5python3main.py1>out.txt2>err.txt &", 而不仅仅是部分 "python3 main.py"?
没有
假设您在 Linux 系统上,您可以找到各个位,但不能将它们放在一起。
还假设进程的 PID 在 $pid
CUDA_VISIBLE_DEVICES=4,5
变量被添加到 python 命令的 environment 中。您可以在 /proc/$pid/environ
中找到它,但您无法分辨哪些变量是在命令行中指定的:用户可能已经编写了
export CUDA_VISIBLE_DEVICES=4,5
python3 main.py 1> out.txt 2> err.txt &
文件重定向在 /proc/$pid/fd
:
/proc/$pid/fd/1
是一个符号 link 到out.txt
/proc/$pid/fd/2
是一个符号 link 到err.txt
我不知道如何判断一个进程是否在后台 运行。
因为您只对环境感兴趣:bash
declare -A environ
while IFS='=' read -r -d '' var value; do
environ["$var"]="$value"
done < /proc/$pid/environ
echo "process has CUDA_VISIBLE_DEVICE value ${environ[CUDA_VISIBLE_DEVICE]}"