Estoy intentando asignar un nivel de prioridad alto a un programa Python tan pronto como se ejecuta mediante Terminal. Estoy pensando en una sintaxis similar a la siguiente:
sudo nice -n -20 pythonfile.py
Esto devuelve el error: no such file
. Sin embargo,
python pythonfile.py
funciona bien, por lo que el archivo ciertamente existe. Los únicos otros ejemplos en Internet que he visto son archivos de shell que terminan en sh, como
sudo nice -n -20 ./test.sh
Pero quiero poder hacer esto para un archivo Python. Por cierto, puedo hacer que esto se aplique a un programa Python que ya se está ejecutando, renice
pero quiero poder asignar una alta prioridad a la tarea desde el principio.
Respuesta1
No importa si estás ejecutando un script de Shell o un script de Python, y ni siquiera importa si estás usando sudo
y/o nice
no. La sintaxis final sigue siendo la misma, siempre que prestes atención a¿Qué comando estás ejecutando?– es decir, si estás llamando explícitamente a un intérprete o si estás ejecutando directamente el script como un programa.
En su ejemplo de trabajo, está ejecutando python
el programa real y el nombre del script es solo un parámetro. Esto funciona porque el programa 'python' se encuentra automáticamente a través de $PATH.
python myscript.py
bash myscript.sh
node myscript.js
En su ejemplo que no funciona, no especificó el intérprete, por lo que el scriptsí mismose convierte en el comando a ejecutar. El sistema vuelve a intentar encontrarlo a través de $PATH y falla. Para que funcione, debe especificar dónde se encuentra el script o programa.
Observe cómo el ejemplo que encontró para shellscripts especifica el directorio en el que se encuentra el script (esa es la ./
parte que significa "directorio actual").
./myscript.py
./myscript.sh
./myscript.rb
(Tenga en cuenta también: debido a que no le está indicando al sistema qué intérprete usar, el script1ra lineadebe hacer eso en su lugar. Normalmente debería decir #!/usr/bin/env python
.)
Entonces la respuesta es que tanto Sudo como nice siguen exactamente las mismas reglas descritas anteriormente que los comandos normales. Por ejemplo, puedes ejecutar el script de esta manera:
pitónmiscript.py sudopitónmiscript.py agradable -n -20nodomiscript.js sudo agradable -n -20intentomiscript.sh
Lo mismo ocurre con la invocación directa del script:
./prueba.py sudo./prueba.pl agradable -n -20./prueba.js sudo agradable -n -20./prueba.sh