sky__sea 发表于 2016-06-22 11:00

关于shell脚本里面调用命令的父进程问题

我在做一个测试,写一个shell脚本,里面随便调用一些系统命令,比如rm,chmod之类的,但是我跟踪系统调用发现,在执行rm的时候,他的父进程往上追溯直到1,也米有我这个shell脚本,好奇怪,明明是我的shell调用,为什么rm的父进程不是我的shell脚本呢?

sky__sea 发表于 2016-06-22 14:52

木有人回答呀,如果我只想某个脚本可以调用rm命令删除某个文件,直接rm或者其他脚本都不行,这个怎么实现呢?

nswcfd 发表于 2016-06-22 17:53

怎么确认的rm的parent不是shell?

sky__sea 发表于 2016-06-23 09:20

我把rm操作的所有父进程一直追朔到1,也没有调用的脚本,都是bash,sshd

我爱你我的菜 发表于 2016-06-23 09:25

你的脚本执行rm,那rm不就是你脚本的进程么?

sky__sea 发表于 2016-06-23 14:42

应该不是吧,执行rm的时候显示的进程名字是/bin/rm,而不是我脚本的名字,似乎二者无法联系在一起。

_nosay 发表于 2016-06-23 15:12

rm一般很快就执行完了,你怎么有时间查看它父进程的?

_nosay 发表于 2016-06-23 15:23

// 脚本内容
xxx@HP-xxx:~/test $ cat test.sh
#!/bin/bash
./test

// test.sh启动test,无限打印hello
xxx@HP-xxx:~/test $ ./test.sh
hello
hello

// bash进程号2348,test进程号2349
xxx@HP-xxx:~ $ ps aux | grep test
xxx   23480.00.0166081216 pts/1    S+   15:14   0:00 /bin/bash ./test.sh
xxx   23490.00.0   4192   356 pts/1    S+   15:14   0:00 ./test
xxx   23510.00.015936   972 pts/3    S+   15:14   0:00 grep --color=auto test

// test父进程号2348
xxx@HP-xxx:~ $ cat /proc/2349/status
Name:   test
State:S (sleeping)
Tgid:   2349
Ngid:   0
Pid:    2349
PPid:   2348
...

我在我自己电脑验证,父进程不是1 。

sky__sea 发表于 2016-07-07 10:03

你这个2349是/bin/bash,而不是test.sh,test进程和脚本test.sh没有关系。
页: [1]
查看完整版本: 关于shell脚本里面调用命令的父进程问题