※ 引述《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 訊息顯示在螢幕上面。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.145.21
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1437814141.A.6B4.html
※ 編輯: kenduest (111.243.145.21), 07/25/2015 16:49:21