nohup多个顺序命令

我需要一个接一个的nohup两个命令。 第二个命令必须在第一个命令之后执行。 这里是命令:

 tar -zcf archive.tar.gz.tmp mydir mv archive.tar.gz.tmp archive.tar.gz 

我需要命令在后台运行,但显然不是在同一时间。 第二个命令必须在第一个命令完成后运行。 我试过这个:

 nohup tar -zcf archive.tar.gz.tmp mydir ; mv archive.tar.gz.tmp archive.tar.gz > /dev/null 2>&1 & 

但是这些命令不会在后台运行。 bash提示等待,直到两个命令完成,然后再给我另一个提示。 我需要他们在后台运行。

如果我做:

 nohup tar -zcf archive.tar.gz.tmp mydir > /dev/null 2>&1 & 

完美地在后台运行。 只有当我尝试做一个以上的命令。

我也试过:

 nohup tar -zcf archive.tar.gz.tmp mydir > /dev/null 2>&1 & ; mv archive.tar.gz.tmp archive.tar.gz > /dev/null 2>&1 & 

但是那也行不通。 无效的语法或东西。 我相信有一种方法可以做到这一点,但我只是不确定的语法。

我能想到的唯一select是把命令放到一个.sh文件和nohup那个文件中,但是这并不一定是我可以在Linux系统上执行的操作(权限限制等)。

最简单的解决scheme:创build一个shell脚本

  #/bin/sh tar -zcf archive.tar.gz.tmp mydir mv archive.tar.gz.tmp archive.tar.gz 

并使用nohup myscript 。 可能在脚本中有一些额外的文档。

(是的,我是一个非常吸引人的人,特别是和多个人一起工作,或者有一天你离职,你的继任者需要弄清楚为什么。)


替代scheme可能是为子任务启动一个新的shell(在这种情况下,您的焦油和移动)

nohup`$(tar -zcf archive.tar.gz.tmp mydir; mv archive.tar.gz.tmp archive.tar.gz)


备选案文2:

nohup“`tar -zcf archive.tar.gz.tmp mydir; mv archive.tar.gz.tmp archive.tar.gz“`。

我真的很喜欢这个剧本。 当你或者其他人在几年内看到他的脚本时,这些评论可能会非常有用,并且奇怪为什么这样做。

在一个不相关的说明:我怎么发出一个愤怒反其道而行呢? (shell命令使用此命令;将输出提供给另一个命令作为input)。

我想你需要括号。

nohup $(tar -zcf archive.tar.gz.tmp mydir; mv archive.tar.gz.tmp archive.tar.gz) >/dev/null 2>&1 &

也许一个bash包装?

 nohup bash -c 'tar -zcf archive.tar.gz.tmp mydir > /dev/null 2>&1 ; mv archive.tar.gz.tmp archive.tar.gz > /dev/null 2>&1' & 

您可以使用screen给出命令并从屏幕会话中分离:

 screen tar -zcf archive.tar.gz.tmp mydir && mv archive.tar.gz.tmp archive.tar.gz ctrl-a d to detach 

这些命令将像nohup一样运行。