【问题标题】:Multiple jobs on server using a script使用脚本在服务器上执行多个作业
【发布时间】:2012-06-26 07:11:21
【问题描述】:

我正在尝试使用qsub 命令自动将许多作业发送到服务器。我制作了一个 shell 脚本,它使用printf 根据一些输入文件创建多个批处理脚本。问题是这些作业无法运行。当我使用 gedit 打开从我的 shell 脚本创建的这些批处理脚本并保存它们而不修改它们时,它们就可以工作了。这让我觉得这是某种格式问题。

你能给我一个解决这个问题的方法吗?

这是创建要提交的脚本的 shell 脚本:


#!/bin/sh
cd /home/PATH/

FILES=$(ls inpt/ | grep "centers")
i=1
declare -i i
for f in $FILES
do
    printf "#!/bin/bash\ncd /home/PATH/\n./nvt inpt/%b" "$f" > run-script$i.sh
    i=$i+1
done

【问题讨论】:

  • 你在最后尝试换行了吗?
  • 不,我会尝试并告诉你它是否有效。
  • 这对 Ignacio 有效,谢谢。您可以在答案部分回复,以便我标记答案吗?同样出于某种原因,在末尾添加新行并没有在输出脚本本身中给我一个可见的新行。

标签: bash shell unix jobs


【解决方案1】:

您必须为脚本设置可执行位:

printf "#!/bin/bash\ncd /home/PATH/\n./nvt inpt/%b" "$f" > run-script$i.sh
chmod +x run-script$i.sh

为确保不是格式问题(或printf 的任何问题),您可以尝试使用echo

echo '#!/bin/bash' > run-script$i.sh
echo cd /home/PATH/ >> run-script$i.sh
echo ./nvt "inpt/$f" >> run-script$i.sh

【讨论】:

  • 我试过了,但没有任何改变。只是,将其保存在 gedit 下有效。
  • 请检查所有权限好吗?
  • 是的,它也适用于 echo。我想这一定是某种 EOF 问题。
最近更新 更多