Re: [问题] nohup + & 同时执行多行指令

楼主: kenduest (小州)   2015-07-25 16:48:58
※ 引述《gigigigi (gigigigi)》之铭言:
因为指令太长直接在 PTT 上面推文不方便,直接回文
: 我想使用 nohup & 再背景自动 build code
: 可是我build code 需要有多行指令
: export USERDATA_APK="Facebook_Client";
: source build/envsetup.sh; lunch dlx-userdebug DEBUG;
: make 2>&1 > make.log
: 我把上面合并起来变成一行 ,指令前后分别加上nohup , & 包住这些指令
: 不过还是无法build成功
: nohup export USERDATA_APK="Facebook_Client" ;
: source build/envsetup.sh; lunch dlx-userdebug DEBUG; make 2>&1 >
: make.log &
: 请问这是什么原因?
: 谢谢
这个语法有点问题,要记得 nohup 后面要传入实际外部命令达成目的效果,
其中 export 这是 bash 内建命令所以不能够这样使用
指令内 lunch 不知道是 envsetup.sh 产生的 function 呼叫名称还是外部的
程式档案?这会牵涉到整个要套用 nohup 有不同情况。
建议上面这些命令写成一个 shell script,后续可以用 nohup 来执行是比较
快速与方便的作法。
#!/bin/bash
export USERDATA_APK="Facebook_Client";
source build/envsetup.sh; lunch dlx-userdebug DEBUG;
make
编写好之后储存,chmod a+x filename.sh 完成权限设定,后续可以用
nohup ./filename.sh > result.log 2>&1 & 这样方式执行就好
另外你原本 make 2>&1 > make.log 这语法也不大正确,正确应该是
make > make.log 2>&1,后者方式才可以正确把 stdout/stderr 讯息都储存起来,
你的顺序反了储存的结果就有点问题。
make 2>&1 > make.log 这会变成把原本透过 stdout 讯息储存到 make.log 档案,
而透过 stderr 讯息显示在萤幕上面。

Links booklink

Contact Us: admin [ a t ] ucptt.com