pkillを特定のプロセスに絞る方法

August 1,2019 12:03 AM
Category:[Linux]
Tag:[Linux]
Permalink

pkillを特定のプロセスに絞る方法を紹介します。

1.問題点

pkillはプロセス名を指定して強制終了させるためのコマンドです。

たとえば、実行中のtest.shを終了させる場合、

$ pkill test.sh

とすればプロセスを終了できます。

ただ、プロセス名で検索するため、終了させたくない同名の他のプロセスまで終了してしまいます。

これを特定のプロセスに絞りたいのですが、方法が分かりません。

ということで、pkillを特定のプロセスに絞る方法を紹介します。

2.pkillを特定のプロセスに絞る

pkillを特定のプロセスに絞る方法として、"-t"オプションで実行中のターミナル(TTY)を指定します。

$ pkill -t pts/59 test.sh

または

$ pkill --terminal pts/59 test.sh

"-t"または"--terminal"は、ターミナルを指定するオプションです。

これで終了させたいプロセスを、特定のターミナルだけに絞ることができます。

ターミナルを調べるには、プロセス実行前にttyコマンドを実行しておきます。

下記の例では、ターミナルが"/dev/pts/59"であることを示しています。

$ tty
/dev/pts/59

なお、"-t"オプションにターミナルを指定する場合、先頭の"/dev/"は省略します。

また、複数のターミナルを指定する場合はカンマ区切りで指定します。

$ pkill --terminal pts/59,pts/52 test.sh
Comments [0] | Trackbacks [0]

Linuxで文字列の特定部分を抜き出す方法

July 23,2019 12:03 AM
Category:[Linux]
Tag:[Linux]
Permalink

Linuxで文字列の特定部分を抜き出す方法を紹介します。

1.問題点

下記のように、lsコマンドでファイルの一覧を取得します。

# ls -l
合計 3
-rw-r--r--. 1 root root   0  6月 28 10:31 2019 aaa
-rw-r--r--. 1 root root   0  6月 28 10:31 2019 bbb
-rw-r--r--. 1 root root   0  6月 28 10:31 2019 ccc

この出力から「6月」から「10」までの文字列

6月 28 10

を取得したいのですが、方法が分かりません。

ということで、Linuxで文字列の特定部分を抜き出す方法を紹介します。

2.文字列の特定部分を抜き出す

文字列の特定部分を抜き出すには、cutコマンドを利用します。

# ls -l | cut -c 30-37
 
6月 28 10
6月 28 10
6月 28 10

"-c"は、示した位置の文字だけを表示するオプションです。

上記の例では30文字から37文字を表示します。

Comments [0] | Trackbacks [0]

bashの配列をjoinする方法

July 19,2019 12:03 AM
Category:[bash]
Tag:[bash]
Permalink

bashの配列をjoinする方法を紹介します。

1.問題点

bashで次のようなリストを作成しました。

#!/bin/bash
 
declare -a list=("a" "b" "c")

この配列変数listの各データをカンマで結合させて1つのデータにしたいのですが、方法がわかりません。

ということで、bashの配列をjoinする方法を紹介します。

2.bashの配列をjoinする

bashの配列をjoinするには、IFSを利用します。

#!/bin/bash
 
declare -a list=("a" "b" "c")
result="$(IFS=","; echo "${list[*]}")"
echo ${result}

実行結果

a,b,c

IFSは区切り文字の環境変数です。bashの場合、空白文字が区切り文字として初期設定されています。

これを強制的に書き替えたあと、配列を

${配列名[*]}

の形式で出力すると、書き替えたIFSを区切り文字と利用します。

ここではサンプルを簡単にするために区切り文字を書き替えたままにしていますが、処理のあとで空白文字を区切り文字として利用する場合は元に戻しましょう。

#!/bin/bash
 
declare -a list=("a" "b" "c")
backup=$IFS
result="$(IFS=","; echo "${list[*]}")"
IFS=$backup
echo ${result}
Comments [0] | Trackbacks [0]
 1  |  2  |  3  |  4  |  5  | All pages