簡體   English   中英

在bash腳本中執行多個命令

[英]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

更新:我猜錯了! 無論如何,這似乎有一個可怕的復制錯誤,任務集被調用了兩次。 ]

有幾種可能性:

  1. daemon taskset -c 0,1 $exec -a -b $var ,看起來不錯,但我懷疑是錯誤的,因為它可能使taskset成為守護程序,而不是$exec

  2. taskset -c 0,1 daemon $exec -a -b $var ,這只是我先前回答的稍有修正的形式, taskset刪除了對taskset的額外調用。 我懷疑這會創建兩個不需要的守護程序。

  3. 與最初使用daemon -20 $exec -a -b $var &一樣啟動守護程序。 接下來,找到正在運行的$exec的進程ID。 最后,運行taskset -c 0,1 -p $PID ,其中PID$exec的進程ID。

我認為您需要使用#3的原因是, daemontaskset每個都將命令作為參數並運行該命令。 正如您所建議的那樣,任何一個都不能(輕松地)在另一行中對另一個啟動的命令進行操作。


你的嘗試

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM