【Linuxコマンド徹底解説】158.Linuxコマンドスキル:スキルとsniceを使ってプロセスをフリーズさせ、プロセスの優先度を下げる

スキル

選択したプロセスにシグナルを送信してプロセスをフリーズします

追加情報

skillこのコマンドは、選択したプロセスにシグナルを送信し、プロセスをフリーズするために使用されます。このコマンドは初心者にはあまり使用されませんが、システム サービスの最適化に関しては使用される場合があります。

文法

skill(选项)

オプション

  • -f:クイックモード;
  • -i: インタラクティブ モード。各操作には確認が必要です。
  • -v: 冗長モード。
  • -w:アクティベーションモード;
  • -V: バージョン番号を表示します。
  • -t: 端末番号を指定してプロセスを開始します。
  • -u: プロセスを開始するユーザーを指定します。
  • -p: プロセスの ID 番号を指定します。
  • -c: プロセスを開始するコマンド名を指定します。

CPU とメモリを大量に消費しているプロセスを見つけたものの、それを停止したくない場合はどうすればよいでしょうか? 次のトップのコマンド出力を考えてみましょう。

top -c -p 16514
23:00:44  up 12 days,  2:04,  4 users,  load average: 0.47, 0.35, 0.31
1 processes: 1 sleeping, 0 running, 0 zombie, 0 stopped
CPU states:  cpu    user    nice  system    irq  softirq  iowait    idle
           total    0.0%    0.6%    8.7%   2.2%     0.0%   88.3%    0.0%
Mem:  1026912k av, 1010476k used,   16436k free,       0k shrd,   52128k buff
                    766724k actv,  143128k in_d,   14264k in_c
Swap: 2041192k av,   83160k used, 1958032k free                  799432k cached

  PID USER     PRI  NI  SIZE  RSS SHARE stat %CPU %MEM   time CPU command
16514 oracle    19   4 28796  26M 20252 D N   7.0  2.5   0:03   0 oraclePRODB2...

プロセス 16514 が大量のメモリを占有していることが確認できたので、skillコマンドを使用してプロセスを停止する代わりに「フリーズ」できます。

skill -STOP 1

その後、上部の出力を確認します。

23:01:11  up 12 days,  2:05,  4 users,  load average: 1.20, 0.54, 0.38
1 processes: 0 sleeping, 0 running, 0 zombie, 1 stopped
CPU states:  cpu    user    nice  system    irq  softirq  iowait    idle
           total    2.3%    0.0%    0.3%   0.0%     0.0%    2.3%   94.8%
Mem:  1026912k av, 1008756k used,   18156k free,       0k shrd,    3976k buff
                    770024k actv,  143496k in_d,   12876k in_c
Swap: 2041192k av,   83152k used, 1958040k free                  851200k cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME CPU COMMAND
16514 oracle    19   4 28796  26M 20252 T N   0.0  2.5   0:04   0 oraclePRODB2...

これで、CPU は 0% アイドル状態から 94% アイドル状態になりました。プロセスは事実上凍結されます。しばらくしてから、プロセスを起動することもできます。

skill -CONT 16514

この方法は、より重要なプロセスが完了するためのスペースを確保するためにプロセスを一時的に凍結する場合に便利です。

このコマンドは非常に多用途です。「oracle」ユーザーのすべてのプロセスを停止したい場合、これを実現するために必要なコマンドは 1 つだけです。

skill -STOP oracle

ユーザー、PID、コマンド、または端末 ID をパラメーターとして使用できます。次のコマンドは、すべての rman コマンドを停止します。

skill -STOP rman

ご覧のとおり、skill入力するパラメータ (プロセス ID、ユーザー ID、またはコマンド) を決定し、それに応じて動作します。これにより、場合によっては問題が発生する可能性があります。同じ名前のユーザーとコマンドが存在する可能性があります。最良の例は「oracle」プロセスで、通常はユーザー「oracle」によって実行されます。したがって、「oracle」という名前のプロセスを停止したい場合は、次のコマンドを実行します。

skill -STOP oracle

使用中のセッションも含め、ユーザー「oracle」のすべてのプロセスが停止します。コマンドの実行を厳密に行うために、オプションで新しい引数を使用して引数のタイプを指定できます。oracle という名前のコマンドを停止するには、次のコマンドを実行します。

skill -STOP -c oracle

sniceコマンドの機能はskillと似ています。ただし、プロセスを停止するのではなく、プロセスの優先度を下げるために使用されます。まず、一番上の出力を確認します。

  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME CPU COMMAND
    3 root      15   0     0    0     0 RW    0.0  0.0   0:00   0 kapmd
13680 oracle    15   0 11336  10M  8820 T     0.0  1.0   0:00   0 oracle
13683 oracle    15   0  9972 9608  7788 T     0.0  0.9   0:00   0 oracle
13686 oracle    15   0  9860 9496  7676 T     0.0  0.9   0:00   0 oracle
13689 oracle    15   0 10004 9640  7820 T     0.0  0.9   0:00   0 oracle
13695 oracle    15   0  9984 9620  7800 T     0.0  0.9   0:00   0 oracle
13698 oracle    15   0 10064 9700  7884 T     0.0  0.9   0:00   0 oracle
13701 oracle    15   0 22204  21M 16940 T     0.0  2.1   0:00   0 oracle

ここで、「oracle」プロセスの優先度を 4 ポイント下げます。値が大きいほど優先度が低くなることに注意してください。

snice +4 -u oracle
  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME CPU COMMAND
16894 oracle    20   4 38904  32M 26248 D N   5.5  3.2   0:01   0 oracle

NI 列 (適切な値) が 4 になり、優先順位が 15 ではなく 20 に設定されることに注意してください。これは優先順位を下げるのに非常に役立ちます。

ゼロから学ぶpython

[Pythonをゼロから学ぶ] 92. Pythonのリクエストライブラリを使用してHTTPリクエストを送信し、応答を処理する
[Pythonをゼロから学ぶ] 91. デコレータと辞書を使用して単純なWebアプリケーションでリクエストパスを管理する
[Pythonをゼロから学ぶ] 93. 辞書を使用する管理 リクエストパス
【ゼロから学ぶPython】 89. WSGIを使ってシンプルで効率的なWebサーバーを構築する
【ゼロから学ぶPython】 88. WSGIインターフェースの詳細解説:シンプルで効率的なWeb開発を実現する
【ゼロから学ぶPython】 87. 手動PythonでHTTPサーバーを構築する 実装とマルチスレッド同時処理
【Pythonをゼロから学ぶ】 86. HTTPプロトコルとブラウザとサーバー通信におけるその役割を深く理解する
【Pythonをゼロから学ぶ】 85. 並列コンピューティング技術の応用Pythonのプロセスプールで
【Pythonをゼロから学ぶ】】 84. スレッドとプロセスを深く理解する
【Pythonをゼロから学ぶ】 83. Pythonのマルチプロセスプログラミングとプロセスプールの利用
【Pythonをゼロから学ぶ】 82. チャットプログラムマルチスレッドに基づいた実装
[ゼロから学ぶ Python] 81. Python の詳細 スレッド通信とキューの応用
[ゼロから学ぶ Python] 80. グローバル変数へのスレッド アクセスとスレッド セーフティの問題
[ゼロから学ぶ Python] 79. スレッド アクセスグローバル変数とスレッド安全性の問題
[Pythonをゼロから学ぶ] 78. ファイルダウンロード事例
[Pythonをゼロから学ぶ] 77. TCPサーバーのプログラミングと注意事項
[Pythonをゼロから学ぶ] 76. サーバーとクライアント: ネットワーク通信の主要コンポーネント
[Pythonを学ぶ] 75. TCPプロトコル:信頼性の高いコネクション指向の伝送層通信プロトコル
【ゼロから学ぶPython】 74. UDPネットワークプログラム:ポートの問題とバインディング情報を詳しく解説
【ゼロから学ぶPython】 73. UDPネットワークプログラム – データの送信
【ゼロから学ぶPython】 72. ソケット通信とソケットの作成方法
【ゼロから学ぶPython】 71. ネットワークポートとその機能
【ゼロから学ぶPython】 70. ネットワークの通信方式とその応用:ルータへの直接通信から複数のネットワーク接続まで
【ゼロから学ぶPython】 69. ネットワーク通信とIPアドレス分類分析
[Pythonをゼロから学ぶ] 68. Python正規表現の貪欲モードと非貪欲モード
[Pythonをゼロから学ぶ] 67. Pythonのreモジュール: 正規置換と高度なマッチング技術
[Pythonをゼロから学ぶ] 66 .正規表現を深く理解する:パターンマッチングとテキスト処理のための強力なツール
【Pythonをゼロから学ぶ】 65. Pythonの正規表現修飾子とその応用を詳しく解説
【Pythonをゼロから学ぶ】 64. re.compileメソッドPython正規表現で使い方を詳しく解説
【ゼロから学ぶPython】 63. 正規表現におけるre.Matchクラスとその属性・メソッドの紹介
【ゼロから学ぶPython】 62. Python正規表現:強力な文字列マッチングツール
【学ぶ】ゼロから学ぶPython】 61. Pythonのプロパティ属性の詳しい解説と応用例
【ゼロから学ぶPython】 60. Exploration Generator:反復のための柔軟なツール
【ゼロから学ぶPython】 59. Iterator:データトラバーサルを最適化するための効率的なツール
【 Pythonをゼロから学ぶ】58. Pythonのカスタム例外と例外の発生方法
【ゼロから学ぶPython】 57. Pythonでwithキーワードを使ってリソースを正しく閉じる
【ゼロから学ぶPython】 56. プログラミングにおける例外処理の重要性と応用
【ゼロから学ぶPython】 55. Pythonのシリアライズとサム デシリアライズ、 JSONとpickleモジュールの応用
【ゼロから学ぶPython】 54. メモリへのデータの書き込み
【ゼロから学ぶPython】 53. CSVファイルとPythonのCSVモジュール
【ゼロから学ぶPython】 52. ファイルの読み書き - Pythonファイル操作ガイド
[ Pythonをゼロから学ぶ】 51. Pythonでファイルとそのア​​プリケーションを開く・閉じる
【Pythonをゼロから学ぶ】 49. Pythonのオブジェクト関連の組み込み関数とその使い方
【Pythonをゼロから学ぶ】 48. 継承と多重化について詳しく解説Python の継承
[Python をゼ​​ロから学ぶ] 47. オブジェクト指向プログラミングにおける継承の概念と基本的な使用法
[Python をゼ​​ロから学ぶ] 46. Python デザイン パターンの __new__ および __init__ メソッドとシングルトンの分析
[Python をゼ​​ロから学ぶ] 45 . Pythonのクラスメソッドと静的メソッド
【ゼロから学ぶPython】 44. オブジェクト指向プログラミングのプライベートプロパティとメソッド
【ゼロから学ぶPython】 43. Pythonのオブジェクト指向プログラミングの例 プロパティとクラス属性
【ゼロから学ぶPython】 42. Pythonの組み込みプロパティとメソッド
【ゼロから学ぶPython】 41. Pythonの魔法のメソッド(2)
【ゼロから学ぶPython】 40. Pythonの魔法のメソッド(1)
【ゼロから学ぶPython】 39. オブジェクト指向の基本構文と応用例
【ゼロから学ぶPython】 38. Pythonパッケージの使い方とインポート方法
【ゼロから学ぶPython】 37. Pythonカスタムモジュールの使い方と注意点
【ゼロから学ぶPython】ゼロから学ぶ】Pythonを学ぶ】 36. Pythonでサードパーティパッケージ管理にpipを使う方法とテクニック
【ゼロから学ぶPython】 35. Pythonの共通システムモジュールとその使い方
【ゼロから学ぶPython】 34. インポートの詳細説明Pythonモジュールの使い方と使い方
【ゼロからPythonを学ぶ】 33. デコレータの役割(2)
【ゼロからPythonを学ぶ】 32. デコレータの役割(1)
【ゼロからPythonを学ぶ】 31. 上位概念を深く理解するPythonで関数とクロージャを並べる
【ゼロから学ぶPythonより】 30. 再帰関数と無名関数を深く理解する
【ゼロから学ぶPython】 29. 「関数パラメータの詳細解説」 - Python関数パラメータのさまざまな使い方を理解する
【 Pythonをゼロから学ぶ】28. Python変数のローカル変数とグローバル変数
【Pythonをゼロから学ぶ】 27. Pythonの関数と入れ子呼び出しの使い方
【Pythonをゼロから学ぶ】 25. 関数:コード作成を効率化するツール
【ゼロから学ぶPython】 24. Pythonの文字列操作とトラバーサルメソッド
【ゼロから学ぶPython】 23. Pythonのセット(set)の使い方とよく使う操作
【ゼロから学ぶPython】 22. 追加、削除、変更、 Pythonのクエリ辞書変数
[ゼロから学ぶPython] 21. Pythonのタプルと辞書
【ゼロから学ぶPython】 20. Pythonのリスト操作スキルと例題
【ゼロから学ぶPython】 19. リストのループとリストのネストの応用
【ゼロから学ぶPython】 18. Pythonのリストの基本操作を詳しく解説(1)
【ゼロから学ぶPythonより】 17. Pythonの文字列のフォーマット方法(2)
【ゼロから学ぶPython】 16. Pythonの文字列のフォーマット方法(1)
【ゼロから学ぶPython】 15. 文字列と文字列を深く理解する文字セットエンコーディング
【ゼロから学ぶPythonから】14. Pythonの文字列に対するよくある操作(2)
【ゼロから学ぶPython】13. Pythonの文字列に対する共通の操作(1)
【ゼロから学ぶPython】12. Pythonの文字列の操作と応用
【 Pythonをゼロから学ぶ】 11. Pythonのループ文と制御フロー
【Pythonをゼロから学ぶ】 10. Pythonの条件文とifの入れ子を詳しく解説
【Pythonをゼロから学ぶ】 09. Pythonの条件判定文
【Pythonをゼロから学ぶ】 08 . Pythonでわかるビット演算子、演算子の優先順位
【ゼロから学ぶPython】 07. Pythonの演算子:代入演算子、比較演算子、論理演算子を詳しく解説 【ゼロ
から学ぶPython】 06. Pythonで算術演算子を使って計算や文字列の連結をする 【ゼロから学ぶPython
】スクラッチ] Python ] 05. Python の出力と入力
【ゼロから学ぶ Python】 04. Python プログラミングの基礎: 変数、データ型、識別子
【ゼロから学ぶ Python】 03. Python 対話型プログラミングとコメントの詳細説明
【Pythonをゼロから学ぶ】 02. 開発ツールの紹介
【Pythonをゼロから学ぶ】 01. Pythonのインストールと設定

おすすめ

転載: blog.csdn.net/qq_33681891/article/details/132968656