我只想发送第一个命令在后台运行。我该怎么做?
例如对于这个命令
sudo apt-get update & && apt-get upgrade
我的第一个命令必须在第二个命令之前运行,如上所示,并且我不想像第一个命令那样运行第二个命令。那么上面的例子就是很好的例子,因为我必须在升级之前运行更新命令。
但它给出了错误(对于我的真实命令也是如此):
bash: syntax error near unexpected token `&&'
答案1
两者都在背景中:
~$ (sleep 1 &) && (sleep 2 &)
~$
背景第一
~$ (sleep 1 &) && (sleep 2)
~$
但无法与 apt-get 一起工作。
編輯:找到了。
sudo bash -c 'apt-get update >/dev/null 2>&1 & disown' && sudo apt-get upgrade
证明:
sudo bash -c 'apt-get update >/dev/null 2>&1 & disown' && sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... The following packages were automatically installed and are no longer required:
gtk2-engines-pixbuf libcrypt-blowfish-perl libcrypt-cbc-perl
libcrypt-rijndael-perl libexpect-perl libgnome2-gconf-perl
libgtk2-ex-simple-list-perl libgtk2-gladexml-perl libgtk2-unique-perl
libio-stty-perl libkeybinder0 libnet-arp-perl libnet-pcap-perl
libnet-proxy-perl libossp-uuid-perl libossp-uuid16 libunique-1.0-0
libxml-parser-perl python-keybinder
Use 'apt-get autoremove' to remove them.
Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
并且更新仍在进行中:
~$ ps -ef|grep apt-get
root 6102 1519 1 12:11 pts/0 00:00:00 apt-get update
但它会破坏顺序:升级将在更新之前完成。