gpt4 book ai didi

java - 使用 & (bg) 运行时,Linux csh 脚本将暂停(tty 输出)

转载 作者:太空狗 更新时间:2023-10-29 11:37:28 24 4
gpt4 key购买 nike

我有奇怪的行为我有运行 java 进程的 csh 文件,如下所示:

运行服务器.csh

#!/usr/bin/tcsh

java -Dtest=testparam -cp ${TEST}/lib/device.jar:${TEST}/conf:${TEST}/lib/commons-logging-1.1.1.jar com.device.server

当我这样运行它时:linux 中 putty shell 中的 run_server.csh&我正在接受这种按摩:

[2]  + Suspended (tty output)        run_server.csh

虽然当我在没有&符号的情况下运行它时,服务器正在运行并将其日志消息输出到标准输出但问题是当我按下 ctr+c 时进程被终止

另一件奇怪的事情是,如果我将包装器脚本写入 run_server.csh看起来像这样的 run_server_wrapper.csh:

#!/usr/bin/tcsh 
run_server.csh &
sleep 5

它确实将服务器作为 bg 进程运行,并且 run_server_wrapper.csh 是它自己得到按摩:

[2]  + Suspended (tty output)        run_server_wrapper.csh

这里有什么问题?

最佳答案

发生的事情是您将进程置于后台,但它仍在写入终端。终端驱动程序不赞成这种行为,并在尝试写入 TTY 时挂起进程。当然,显而易见的答案是停止这样做。如果您将 run_server.csh 放入后台,您还应该重定向输出,如下所示:

run_server.csh > /path/to/serverlog 2>&1 &

如果你想让程序在后台运行并且你仍然想看到输出,通常的解决方案是像我展示的那样将输出重定向到一个日志文件,然后用 tail 监控日志文件 命令。

tail -f /path/to/serverlog

如果您真的,真的想要在后台运行某些东西并且仍然能够写入 TTY,请关闭 tostop 标志。

stty -tostop

关于java - 使用 & (bg) 运行时,Linux csh 脚本将暂停(tty 输出),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25186178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com