ple*_*and 10 bash process shell-script
使用bash
脚本,我正在尝试启动一个进程,等待它向stdout
(即'Server Initialized'
)写入特定字符串,然后将其发送到后台并继续执行脚本。如果'Server Initialized'
打印一次则更好,过程输出被忽略(重定向到/dev/null
?)
作为一个黑客现在我正在等待 10 秒并假设服务器已经启动。
( ./long_running_process ) > /dev/null 2>&1 &
# sleep 10
echo 'I run after long_running_process prints "Server Initialized"
Run Code Online (Sandbox Code Playgroud)
如果在一些超时后搜索字符串没有出现,则奖励积分,然后以错误状态代码退出。
Boz*_*zak 10
这个想法是在后台运行服务器,然后只要出现预期的字符串'Something 3'
('Server Initialized'
在您的情况下)就 grep 其输出
#!/bin/bash
main()
{
output=$(mktemp "${TMPDIR:-/tmp/}$(basename $0).XXX")
server &> $output &
server_pid=$!
echo "Server pid: $server_pid"
echo "Output: $output"
echo "Wait:"
until grep -q -i 'Something 3' $output
do
if ! ps $server_pid > /dev/null
then
echo "The server died" >&2
exit 1
fi
echo -n "."
sleep 1
done
echo
echo "Server is running!"
}
server()
{
i=0
while true; do
let i++
echo "Something $i"
sleep 1
done
}
main "$@"
Run Code Online (Sandbox Code Playgroud)