繁体   English   中英

shell脚本不使用nohup

[英]shell script not working with 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保持为空。

这是你的问题:

#!/ bin / sh的

sh不支持数组。 更改你的shebang行来调用一个支持数组的shell,比如bash ,或者使用一个普通的,空格分隔的数据文件字符串

   DAT_FILES="0010.dat 0020.dat 0030.dat"
   for file in $DAT_FILES
   do
       ...
   done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM