绪论
各位在试哟哦那个Linux的时候想比不时会需要用到,或者是听说过Screen这个工具吧,比如在需要关闭当前终端但是需要保存工作状态,让进程不被杀死,或者说要让一个进程后台运行,而且可以查看输出的时候,Screen确实是一个不错的工具
srds,Screen的功能是很强大,但是使用起来难免有忘记参数或是快捷键的时候,或者不想搞这么复杂,或者说有可能遇上需要用Screen却忘了用,导致进程在后台运行却不能获得其输出的这种尴尬情况,本文便是要来解决这些问题的
为了方便解释,本篇利用“test”这一程序来举例,该程序将从0开始不断输出比上一个输出大1的数字,一行一个输出
方法一:输出到文件,并利用&符号后台运行程序
执行命令:
./test > output.out &
运行结果:
可以看到这里给出了该后台进程之pid,方便我们使用kill指令杀死这个进程,这时我们便可以在终端里干别的事情了,要查看输出的时候查看output.out文件即可
方法二:利用strace命令
这个适用于在后台运行且运行时没有重定向输出的进程,比如下图中的test进程:
记录pid,并执行命令:
strace -ewrite -p 162146
运行结果:
strace命令可以帮助你trace一个程序的系统调用,比如open之类的,我们分析一下这里的一行代表什么
先是write函数,函数本身的意思是输出
第一个参数代表输出的位置,此处的1表示stdout
第二个参数表示输出的内容
第三个参数不太清楚,但是目前对于我们来说无关紧要
最后等号后面的表示该次系统调用之返回值
可以发现,我们只要关注其中第二个参数即可,当然,有需要的话你也可以加上一个grep命令来过滤一下结果
方法三:直接查看文件描述符,看看stdout被重定向到何处
这个方法比较不常用,这里给出几条参考命令
文件描述符路径:
/proc/$PID/fd/1
查看重定向目的地:
readlink /proc/$PID/fd/1
Comments NOTHING