コマンドをバッチリストとして実行できるアプリケーションはありますか? [コピー]

コマンドをバッチリストとして実行できるアプリケーションはありますか? [コピー]

命令を収集して継続的に実行できるアプリケーションはありますか?これは、同時に実行しない複数のコマンドを実行しようとするときに役立ちます。実行中のコマンドと今後のコマンドを表示できる小さなウィンドウを持つことも興味深いでしょう。

「Linuxシェルのバッチリスト」を検索しましたが、何も見つかりませんでした。

答え1

batch従来、この種の作業のためにマルチユーザー環境で使用されていました。特定の共有コンピュータで3人が作業していると想像してください。誰でも自分のプログラムをコンパイルしたいと思うかもしれませんが、大きな邪魔なしに編集できるように、一度に1つのコンパイルだけを実行したいと思います。誰でも自分のコマンドを発行でき、システムは各コマンドを順番に処理します。

echo cc a.c |batch 
echo make projectUser2 |batch 
echo make projectBUser3 |batch 

各ビルドは順次実行されます。

atこのコマンドを入手するには、パッケージをインストールする必要がありますbatch

sudo apt-get install at

ただし、自分のコンピュータでシングルユーザーの場合は、単にファイルを編集して各コマンドをその行に入力できます。たとえば、fileWithCommands次のコンテンツを含むファイル名を生成するとします。

cc a.c
make projectUser2
make projectBUser3

bashを入手して使用してください。

bash ./fileWithCommands

他の答えは、より多くの情報報告を提供するためにより多くのbashシェルコマンド言語を使用します。

出力をファイルとして保存するには

bash ./fileWithCommands >ouput.log` 

これにより、エラーが端末に報告されます。エラーを同じファイルに正しくリダイレ​​クトするには、次のコマンドを使用します。

bash ./fileWithCommands >outputWithErrors.log 2>&1

答え2

学ぶのはとても簡単ですが、単一の答えに合理的に合わせるには、より多くの知識が必要なシェルスクリプトを探しているようです。

私は以下を読むことをお勧めします:

ハウジングマニュアル
バッシュマニュアル

これには、シェルスクリプトの作成を開始するために必要なほぼすべての情報が含まれています。また、あなたが訪問しているサイトはシェルスクリプトのための素晴らしいリソースです。この研究を完了しながら、必要なだけ多くの質問をしますが、答えやすいように特定の質問に集中するように努めてください。ただし、ほとんどの質問はすでに回答されているため、検索機能を使用して目的の回答を見つけることができます。

特定の質問に適した回答を見つけるために実行中のコマンドを監視するための次の機能を提案しました。

run_command () {
    local command=($@)
    printf '%s' "Running: ${command[*]}..."
    if out=$("${command[@]}" 2>&1); then
        printf '%s\n' 'Successful'
        printf '%s\n' "$out"
    else
        printf '%s\n' 'Failed'
        printf '%s\n' "$out"
    fi
}

これをbashスクリプトに入れて、次のコマンドを発行できます。

#!/bin/bash

run_command () {
    local command=($@)
    printf '%s' "Running: ${command[*]}..."
    if out=$("${command[@]}" 2>&1); then
        printf '%s\n' 'Successful'
        printf '%s\n' "$out"
    else
        printf '%s\n' 'Failed'
        printf '%s\n' "$out"
    fi
}

run_command sleep 1
run_command sleep 2
run_command ls -ltr ~/tmp
run_command ls -ltr /fake/dir

次のような出力が生成されます。

$ ./script.sh
Running: sleep 1...Successful

Running: sleep 2...Successful

Running: ls -ltr /Users/jessebutryn/tmp...Successful
total 8
-rwxr-xr-x  1 jessebutryn  staff  337 Mar 30 07:41 script.sh
Running: ls -ltr /fake/dir...Failed
ls: /fake/dir: No such file or directory

答え3

LinuxシェルとCRONサービスはこれを行う簡単な方法を提供します。ここでは、単純なBASHスクリプトを作成して使用されたルートパーティションの割合を取得してログに記録し、10秒後に使用可能な実際の空きメモリを確認して追加します。同じログファイルに。 CRONを使用して5分ごとにこのタスクを実行します。

スクリプト: run_commands.sh

[user ~]# cat run_commands.sh
   #!/bin/bash
   LOG=/home/user/command.log
   DISK=`df -h| grep -w / | awk '{print $5}'`
   echo `date -u` "" "Root PART % Used" = $DISK  >> $LOG
   sleep 10
   REALMEM=`free -m | awk 'NR==2{print $4}'`
   echo `date -u` "" "Real FREE Memory in MB" = $REALMEM  >> $LOG
   exit

次に、CRONに5分ごとにこのスクリプトを実行させます。

crontab -e
*/5 * * * * /home/user/run_commands.sh
 wq:

tail -fそれでは、ログファイルcommand.logを実行して機能していることを確認しましょう。

[user ~]# tail -f command.log
Sat Mar 30 13:40:01 UTC 2019  Root PART % Used = 11%
Sat Mar 30 13:40:11 UTC 2019  Real FREE Memory in MB = 482
Sat Mar 30 13:45:01 UTC 2019  Root PART % Used = 11%
Sat Mar 30 13:45:11 UTC 2019  Real FREE Memory in MB = 482

シェルスクリプトとCRONは私がほぼ毎日使用するツールです。パラメータ検証とエラーチェックがないため、スクリプトは非常に基本的です。しかし、シンプルで作業は完了です。

- 表示

答え4

簡単な答えはそうです。シェルスクリプトです。これが基本です

次の内容でファイルを作成します。

#!/bin/bash
command1
command2
command3
etc

その後、実行可能にします。

chmod +X «the-file-name»

何が起こっているのかの痕跡を見たいなら。次に、set -x2番目の行として追加します(#!/bin/bash追跡するコマンドの後に(最初の行でなければならない)の前に)。

./«the-file-name»必要な場所./やその他の場所情報(たとえば)を入力してスクリプトを実行します«another-directory-name»/«the-file-name»

関連情報