在“lsof”的输出中查找“cwd”(当前工作目录)行。
localhost proc # ps ax | grep test
4751 pts/18 S+ 0:00 sh test.sh
localhost proc # lsof +p 4751
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sh 4751 user cwd DIR 8,3 12288 4964356 /home/user
<CLIP>
localhost proc #
只是为了验证我移动了脚本并再次尝试。
user@localhost ~ $ mv test.sh bin/
user@localhost ~ $ cd bin
user@localhost ~/bin $ sh test.sh
localhost proc # ps ax | grep test
4848 pts/18 S+ 0:00 sh test.sh
localhost proc # lsof +p 4848
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sh 4848 user cwd DIR 8,3 4096 4965757 /home/user/bin
<CLIP>
localhost proc #
如果您不想依赖“lsof”,可以查看“/proc/$pid/”目录并查看“cwd”符号链接的位置:
localhost 4848 # ls -l
total 0
<CLIP>
lrwxrwxrwx 1 user user 0 Feb 13 18:51 cwd -> /home/user/bin
<CLIP>
localhost 4848 #
希望对您有所帮助...
编辑:使用更改“$0”的 Perl 脚本对此进行了测试
user@localhost ~/bin $ ./test.pl
localhost 4848 # ps ax | grep test
5004 pts/17 S+ 0:00 grep --colour=auto test
localhost 4848 # ps ax | grep bogus
5002 pts/18 S+ 0:00 bogus.pl
5006 pts/17 R+ 0:00 grep --colour=auto bogus
localhost 5002 # lsof +p 5002
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
test.pl 5002 user cwd DIR 8,3 4096 4965757 /home/user/bin
<CLIP>
localhost 5002 #
localhost ~ # cd /proc/5002/
localhost 5002 # ls -l
total 0
<CLIP>
lrwxrwxrwx 1 user user 0 Feb 13 19:12 cwd -> /home/user/bin
<CLIP>
文件 '/proc/$pid/status' 包含原始脚本名称:
localhost 5002 # cat status
Name: test.pl
<CLIP>
localhost 5002 #