Können Sie mit Nice ein Python-Programm im Mac-Terminal ausführen?

Können Sie mit Nice ein Python-Programm im Mac-Terminal ausführen?

Ich versuche, einem Python-Programm eine hohe Prioritätsstufe zuzuweisen, sobald es über Terminal ausgeführt wird. Ich denke dabei an eine Syntax in etwa wie folgt:

sudo nice -n -20 pythonfile.py

Dies gibt den Fehler zurück: no such file. Allerdings

python pythonfile.py

funktioniert einwandfrei, also existiert die Datei mit Sicherheit. Die einzigen anderen Beispiele im Internet, die ich gesehen habe, sind Shell-Dateien mit der Endung sh, wie zum Beispiel

sudo nice -n -20 ./test.sh

Aber ich möchte dies für eine Python-Datei tun können. Übrigens kann ich dies auf ein bereits laufendes Python-Programm anwenden, reniceaber ich möchte der Aufgabe von Anfang an eine hohe Priorität zuweisen können.

Antwort1

Es spielt keine Rolle, ob Sie ein Shell-Skript oder ein Python-Skript ausführen, und es spielt nicht einmal eine Rolle, ob Sie sudound/oder verwenden niceoder nicht. Die endgültige Syntax ist immer noch dieselbe, solange Sie darauf achtenwelchen Befehl führen Sie aus– das heißt, ob Sie explizit einen Interpreter aufrufen oder ob Sie das Skript direkt als Programm ausführen.

In Ihrem Arbeitsbeispiel führen Sie es pythonals eigentliches Programm aus und der Name des Skripts ist nur ein Parameter. Dies funktioniert, weil das Programm „Python“ automatisch über $PATH gefunden wird.

python myscript.py
bash myscript.sh
node myscript.js

In Ihrem nicht funktionierenden Beispiel haben Sie den Interpreter nicht angegeben, stattdessen das Skriptselbstwird zum auszuführenden Befehl. Das System versucht erneut, ihn über $PATH zu finden, und schlägt fehl. Damit es funktioniert, müssen Sie angeben, wo sich das Skript oder Programm befindet.

Beachten Sie, dass das Beispiel, das Sie für Shellskripte gefunden haben, das Verzeichnis angibt, in dem sich das Skript befindet (das ist der ./Teil, der „aktuelles Verzeichnis“ bedeutet).

./myscript.py
./myscript.sh
./myscript.rb

(Beachten Sie auch: Da Sie dem System nicht mitteilen, welcher Interpreter verwendet werden soll,1. Zeilemuss das stattdessen tun. Normalerweise sollte da stehen #!/usr/bin/env python.)

Die Antwort lautet also, dass sowohl sudo als auch nice genau denselben Regeln folgen, die oben beschrieben wurden, wie normale Befehle. Sie können das Skript beispielsweise folgendermaßen ausführen:

Pythonmyscript.py
sudoPythonmyscript.py
nett -n -20Knotenmyscript.js
sudo nice -n -20Schlagmyscript.sh

Gleiches gilt für den direkten Skriptaufruf:

./test.py
sudo./www.test.pl
nett -n -20./test.js
sudo nice -n -20./test.sh

verwandte Informationen