我想运行以下命令并关闭终端:
mysqldump -udatabase -pdatabase database > db.sql && zip db.sql.zip db.sql && rm db.sql && mv db.sql.zip /var/www/vhosts/*/httpdocs && cd /var/www/vhosts/*/httpdocs && zip -r backup.zip . && cd && touch backup_is_ready
当终端打开时它工作正常,但 ZIP 大约为 40GB,我希望能够关闭终端,否则断开连接可能会终止进程。
所以我有命令 A && B
我试过:
(A &) && (B &)
(A && B) &
{A && B} &
nohup sh -c "A && B"
nohup { A && B } &
和许多其他选择,但没有任何效果。
我只想将命令字符串放入终端,然后关闭终端,1小时后回来并准备好。
我还有一个更长的命令链,以
sh <(wget -O - https://autoinstall.plesk.com/one-click-installer) && plesk bin init_conf --init -name "John Doe" -passwd "mypassword" -email "[email protected]" -send_announce false -trial_license true -license_agreed true && plesk bin subscription --create example.com -owner admin -service-plan "Unlimited" -ip 000.000.000.000 -login username -passwd 'password' && ...
当终端打开时,我的命令链工作得很好,我只想在将命令链放入终端后关闭它,但我不想为其创建文件。
有没有不需要创建 bash 文件就可以使用的语法?
答案1
- Ctrl + Z 停止(暂停)程序并返回 shell。
bg
在后台运行它。disown -h [job-spec]
在哪里[职位规格]是作业编号(例如 %1 表示第一个运行的作业;使用 jobs 命令查找您的编号),以便在终端关闭时作业不会被终止。
答案2
要在后台启动程序,请使用:
<your command> &
我建议只是将您想要的内容作为两个单独的命令运行。尝试:
user@hostname$ A &
user@hostname$ B &
如果此过程过于繁重或需要频繁运行,您可以将这些命令输入到外壳脚本。然后可以运行该脚本
/path/to/my_script.sh &
更新:
根据您评论中的其他信息,有关如何 ssh 到主机、运行多个命令然后断开连接的概述,请参阅以下答案:https://stackoverflow.com/a/4412338/3465014