[英]executing multiple commands in bash script
我有一個在我的bash腳本中運行的命令;
daemon -20 $exec -a -b $var &
我想在我的命令乘法中使用taskset命令;
daemon -20 ; taskset -c 0,1 $exec -a -b $var &
但是它不起作用,這是什么問題。 例如,當我將任務集與echo一起使用時,它將起作用。
它不適用於守護程序。
更新:@chepner我認為您建議使用第三個方法,可以做到,但我不想再次提取proc ID。我使用daemon作為守護程序運行並將-20設置為不錯的process.So,如果有一種方法使用Taskset來設置CPU親和力和漂亮的命令來一起設置優先級,這也很好
分號將兩個不同的過程分開(將其視為一條可見的換行符)。
當您運行daemon -20 $exec -a -b $var &
,您正在運行一個命令daemon
,該命令(除其他外)將變量exec
存儲的參數作為要作為守護程序運行的程序。
[如果我猜對了,您想使用taskset
命令啟動兩個守護程序。 我想你想要的是
taskset -c 0,1 daemon -20 taskset -c 0,1 $exec -a -b $var
更新:我猜錯了! 無論如何,這似乎有一個可怕的復制錯誤,任務集被調用了兩次。 ]
有幾種可能性:
daemon taskset -c 0,1 $exec -a -b $var
,看起來不錯,但我懷疑是錯誤的,因為它可能使taskset
成為守護程序,而不是$exec
。
taskset -c 0,1 daemon $exec -a -b $var
,這只是我先前回答的稍有修正的形式, taskset
刪除了對taskset
的額外調用。 我懷疑這會創建兩個不需要的守護程序。
與最初使用daemon -20 $exec -a -b $var &
一樣啟動守護程序。 接下來,找到正在運行的$exec
的進程ID。 最后,運行taskset -c 0,1 -p $PID
,其中PID
是$exec
的進程ID。
我認為您需要使用#3的原因是, daemon
和taskset
每個都將命令作為參數並運行該命令。 正如您所建議的那樣,任何一個都不能(輕松地)在另一行中對另一個啟動的命令進行操作。
你的嘗試
daemon -20 ; taskset -c 0,1 $exec -a -b $var &
僅使用單個參數( -20
)調用daemon
,該參數可能會或可能不會做任何事情(我對daemon
命令不熟悉)。 完成后,它將調用taskset
命令在兩個處理器上運行$exec
命名的可執行文件。
我不確定我是否理解正確,請原諒我,如果這不能回答您的問題。
您可以這樣做:
daemon -20 $exec -a -b $var &
taskset -p -c 0,1 $!
它將運行daemon命令,然后立即設置其CPU親和力,或者:
taskset -c 0,1 daemon -20 $exec -a -b $var &
首先,以適當的相似性啟動守護程序。
免責聲明:我不熟悉tasket命令; 這個答案完全基於我對Taskset手冊頁的閱讀。
編輯:我不熟悉daemon
命令的功能。 如果您只是想以給定的相似性在后台運行存儲在$ exec中的命令,則該命令就足夠了:
taskset -c 0,1 $exec -a -b $var &
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.