bru*_*lin 5 php bash hpc lsf slurm
我正在寻找一些一般性建议而不是编码解决方案。基本上,当通过 bsub 提交作业时,我可以通过指定以下任何一项来检索 Stdin/Stdout 的日志:
bsub -o log.txt % sends StdOut to log.txt
bsub -u me@email % sends StdOut to email
Run Code Online (Sandbox Code Playgroud)
这些都很棒,但是我的程序在提交给 bsub 时会创建一个文件夹并存储在远程服务器上。基本上我想
a) 检索文件夹及其内容 b) 作业完成后自动执行此操作
所以我可以在技术上使用scp -r,但是我必须手动执行此操作。如果我在工作完成后收到电子邮件警报,那还不错,但仍然 - 我必须手动执行此操作。
所以到 b):
好吧,我看不到 bsub 检索实际结果的任何特殊标志,只有 StdOut。我想我可以有一个脚本来使用sleep并设置工作时间(为了安全起见,可能会有点徘徊),比如
#!/bin/bash
scp myfile.txt server:main/subfolder
ssh bsub < myprogram.sh -u my@email
sleep <job-time>
scp -r server:main/subfolder result_folder
Run Code Online (Sandbox Code Playgroud)
但是我有点担心被注销等和脚本在工作完成之前终止。
有没有人有什么建议?
我本质上想要一个界面(将来的网站),用户可以在其中提交文件,远程分析文件,在工作开始/完成时向用户发送电子邮件,结果自动检索回本地/网络服务器,用户收到电子邮件说他们可以选择他们的结果。
一步一步!
您可以将结果目录 tar 到 stdout 中,放入日志文件中。然后解压缩日志文件以检索目录。
将tar czf - ...命令添加到脚本末尾。
如果您有其他内容首先出现在 stdout 上,请将其移至 stderr,或者在 tar 之前回显一些唯一的字符串,对其进行 grep,然后从那里开始 tar。这是对该原理的一种测试:
marker='#magic' # some unique string
log=/tmp/b # your logfile
echo 'test' >/tmp/a # just something to tar for this test
# -- in your script, at end --
# echo "$marker"; tar cf - /tmp/a
# -- equivalent in this test:
(echo 'hello'; echo "$marker"; tar cf - /tmp/a) >$log
# -- to recover the tar --
start=$(grep -ab "$marker" <$log | awk -F: '{print 1+$1+length($2)}')
dd skip=1 bs=$start <$log |
tar tvf - # use tar x really
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
503 次 |
| 最近记录: |