ターミナルを使用して Python プログラムを実行するとすぐに、そのプログラムに高い優先度レベルを割り当てようとしています。次のような構文を考えています:
sudo nice -n -20 pythonfile.py
これはエラーを返します: no such file
。ただし、
python pythonfile.py
問題なく動作するので、ファイルは確かに存在します。私がインターネットで見た他の例は、shで終わるシェルファイルだけです。
sudo nice -n -20 ./test.sh
しかし、私はこれを Python ファイルに対して実行できるようにしたいと考えています。ちなみに、これを使用して、すでに実行中の Python プログラムに適用できますrenice
が、最初からタスクに高い優先度を割り当てられるようにしたいと考えています。
答え1
sudo
シェルスクリプトを実行しているかPythonスクリプトを実行しているかは関係ありません。また、and/orを使用しているかどうかも関係ありませんnice
。最終的な構文は同じですが、次の点に注意する必要があります。実行しているコマンドつまり、インタープリターを明示的に呼び出しているか、スクリプトをプログラムとして直接実行しているかということです。
実際の例では、python
実際のプログラムとして実行されており、スクリプトの名前は単なるパラメータです。これは、「python」プログラムが $PATH を通じて自動的に検出されるため機能します。
python myscript.py
bash myscript.sh
node myscript.js
動作しない例では、インタープリタを指定していないため、代わりにスクリプト自体は実行するコマンドになります。システムは再度 $PATH を介して検索を試みますが、失敗します。これを機能させるには、スクリプトまたはプログラムが配置されている場所を指定する必要があります。
シェルスクリプトの例では、スクリプトが配置されているディレクトリ ( ./
「現在のディレクトリ」を意味する部分) が指定されていることに注意してください。
./myscript.py
./myscript.sh
./myscript.rb
(また、システムにどのインタープリタを使用するか指示していないため、スクリプトの1行目代わりに を実行する必要があります。通常は と表示されます#!/usr/bin/env python
。
答えは、sudo と nice はどちらも通常のコマンドとして上記で説明したのと同じルールに従うということです。たとえば、次のようにスクリプトを実行できます。
パイソンスクリプト 須藤パイソンスクリプト 素敵 -n -20ノードスクリプト sudo ナイス -n -20バッシュスクリプト
直接スクリプトを呼び出す場合も同様です。
./テスト 須藤./テスト 素敵 -n -20./テスト sudo ナイス -n -20./テスト