我只是运行一个工作(假设 foo.sh)。
./foo.sh
[Press Ctrl-Z to stop]
bg # enter background
Run Code Online (Sandbox Code Playgroud)
它生成输出到 stdout 和 stderr。有什么方法可以重定向到 stdout 和 stderr 到其他文件而不是当前屏幕?
s.w*_*ner 22
显然我第一次误读了你的问题,所以这是我更新的答案:
将程序发送到后台后,首先要找到它的PID
pgrep foo.sh
Run Code Online (Sandbox Code Playgroud)
然后你可以gdb用来附加到那个进程
gdb -p <PID>
Run Code Online (Sandbox Code Playgroud)
gdb然后在您更改此程序写入的位置
p dup2(open("/path/to/file",577, 420), 1)
p dup2(1, 2)
Run Code Online (Sandbox Code Playgroud)
然后你脱离进程并退出 gdb
detach
quit
Run Code Online (Sandbox Code Playgroud)
一点解释
577 相当于 O_CREAT|O_WRONLY|O_TRUNC420 相当于 S_IRUSR|S_IWUSR|S_IRGRP|S_IROTHopen打开文件并将其截断为 0 字节(如果它存在)或创建一个具有正确文件权限的新文件(如果它不存在)dup2复制文件描述符调用返回的open文件描述符1(即stdout)dup2文件描述符复制1到2(即stderr)| 归档时间: |
|
| 查看次数: |
4918 次 |
| 最近记录: |