shell 脚本不能与 nohup 一起使用
我正在尝试使用 nohup 命令运行 shell 脚本。 shell 脚本获取一个文件数组,在循环中对每个文件运行一个 python 程序,并将输出附加到一个文件中。这在服务器上工作正常,但如果我尝试使用 nohup 命令,它就不起作用。我已在此服务器上使用 nohup 成功运行其他程序,但不是此脚本。
#!/bin/sh
ARRAY=(0010.dat 0020.dat 0030.dat)
rm batch_results.dat
touch batch0.dat
touch batch_results.dat
for file in ${ARRAY[@]}
do
python fof.py $file > /dev/null
python mdisk5.py > ./batch0.dat
tail -1 batch0.dat
tail -1 batch0.dat >> batch_results.dat
done
例如,当我在保持连接到服务器的情况下运行该程序时,该程序工作正常
./batch.sh > /dev/null &
./batch.sh > ./output.txt &
但是,当我尝试使用 nohup 命令运行它时,
nohup ./batch.sh > /dev/null &
如果我退出服务器并返回输出文件(batch_results.dat)没有任何内容数据。
我确信我在这里缺少一些简单的修复或命令。有什么想法吗?
编辑: 程序 fof.py 生成两个文件,用作 mdisk5.py 的输入。 当我在运行 nohup 时退出服务器时,会生成这两个文件,但仅限于第一个输入文件“0010.dat”。输出文件batch0.dat 和batch_results.dat 保持为空。
I am trying to run a shell script with the nohup command. The shell script takes an array of files, runs a python program on each file in a loop, and appends the output to a file. This works fine on the server, but if I try to use the nohup command it does not work. I have successfully run other programs using nohup on this server, just not this script.
#!/bin/sh
ARRAY=(0010.dat 0020.dat 0030.dat)
rm batch_results.dat
touch batch0.dat
touch batch_results.dat
for file in ${ARRAY[@]}
do
python fof.py $file > /dev/null
python mdisk5.py > ./batch0.dat
tail -1 batch0.dat
tail -1 batch0.dat >> batch_results.dat
done
The program works fine when I run it while staying connected to the server, for example
./batch.sh > /dev/null &
./batch.sh > ./output.txt &
However, when I try to run it with the nohup command,
nohup ./batch.sh > /dev/null &
if I exit the server and come back the output file (batch_results.dat) does not have any data.
I am sure I am missing some simple fix or command in here. Any ideas?
Edit:
The program fof.py produces two files that are used as input for mdisk5.py.
When I exit the server while running nohup, these two files are produced, but only for the first input file '0010.dat'. The output files batch0.dat and batch_results.dat remain empty.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是你的问题:
sh
不支持数组。更改 shebang 行以调用支持数组的 shell,例如 bash,或者使用正常的、以空格分隔的数据文件字符串,例如Here's your problem:
sh
does not support arrays. Either change your shebang line to invoke a shell that does support arrays, likebash
, or use a normal, whitespace separated string of your data files in a like