除非关闭并重新打开您的tty(即注销并重新登录,这可能还会终止该过程中的某些后台进程),否则您只剩下一个选择:
- 使用gdb附加到有问题的进程,然后运行:
- p dup2(open(“ / dev / null”,0),1)
- p dup2(open(“ / dev / null”,0),2)
- detach
- quit
例如:
$ tail -f /var/log/lastlog &[1] 5636$ ls -l /proc/5636/fdtotal 0lrwx------ 1 myuser myuser 64 Feb 27 07:36 0 -> /dev/pts/0lrwx------ 1 myuser myuser 64 Feb 27 07:36 1 -> /dev/pts/0lrwx------ 1 myuser myuser 64 Feb 27 07:36 2 -> /dev/pts/0lr-x------ 1 myuser myuser 64 Feb 27 07:36 3 -> /var/log/lastlog$ gdb -p 5636GNU gdb 6.8-debianCopyright (C) 2008 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law. Type "show copying"and "show warranty" for details.This GDB was configured as "x86_64-linux-gnu".Attaching to process 5636Reading symbols from /usr/bin/tail...(no debugging symbols found)...done.Reading symbols from /lib/librt.so.1...(no debugging symbols found)...done.Loaded symbols for /lib/librt.so.1Reading symbols from /lib/libc.so.6...(no debugging symbols found)...done.Loaded symbols for /lib/libc.so.6Reading symbols from /lib/libpthread.so.0...(no debugging symbols found)...done.[Thread debugging using libthread_db enabled][New Thread 0x7f3c8f5a66e0 (LWP 5636)]Loaded symbols for /lib/libpthread.so.0Reading symbols from /lib/ld-linux-x86-64.so.2...(no debugging symbols found)...done.Loaded symbols for /lib64/ld-linux-x86-64.so.2(no debugging symbols found)0x00007f3c8eec7b50 in nanosleep () from /lib/libc.so.6(gdb) p dup2(open("/dev/null",0),1)[Switching to Thread 0x7f3c8f5a66e0 (LWP 5636)] = 1(gdb) p dup2(open("/dev/null",0),2) = 2(gdb) detachDetaching from program: /usr/bin/tail, process 5636(gdb) quit$ ls -l /proc/5636/fdtotal 0lrwx------ 1 myuser myuser 64 Feb 27 07:36 0 -> /dev/pts/0lrwx------ 1 myuser myuser 64 Feb 27 07:36 1 -> /dev/nulllrwx------ 1 myuser myuser 64 Feb 27 07:36 2 -> /dev/nulllr-x------ 1 myuser myuser 64 Feb 27 07:36 3 -> /var/log/lastloglr-x------ 1 myuser myuser 64 Feb 27 07:36 4 -> /dev/nulllr-x------ 1 myuser myuser 64 Feb 27 07:36 5 -> /dev/null
您还可以考虑:
- 使用
screen
; 屏幕提供了几个虚拟TTY,您可以在不打开新的SSH / telnet / etc,会话的情况下进行切换 - 使用
nohup
; 这样,您就可以关闭并重新打开会话,而不会丢失…进程中的任何后台进程。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)