Estou tentando atribuir um nível de alta prioridade a um programa Python assim que ele é executado usando o Terminal. Estou pensando em sintaxe nos moldes de:
sudo nice -n -20 pythonfile.py
Isso retorna o erro: no such file
. No entanto,
python pythonfile.py
funciona muito bem, então o arquivo certamente existe. Os únicos outros exemplos na internet que vi são arquivos shell que terminam em sh, como
sudo nice -n -20 ./test.sh
Mas quero poder fazer isso para um arquivo Python. Aliás, posso aplicar isso a um programa python já em execução, renice
mas quero poder atribuir uma alta prioridade à tarefa desde o início.
Responder1
Não importa se você está executando um script Shell ou um script Python, e nem importa se você está usando sudo
e/ou nice
não. A sintaxe final ainda é a mesma, contanto que você preste atenção emqual comando você está executando– isto é, se você está chamando explicitamente um intérprete ou se está executando diretamente o script como um programa.
No seu exemplo prático, você está executando python
como o programa real e o nome do script é apenas um parâmetro. Isso funciona porque o programa 'python' é encontrado automaticamente através de $PATH.
python myscript.py
bash myscript.sh
node myscript.js
No seu exemplo que não funciona, você não especificou o intérprete, então, em vez disso, o scriptem sitorna-se o comando a ser executado. O sistema tenta encontrá-lo novamente por meio de $PATH e falha. Para que funcione, você deve especificar onde o script ou programa está localizado.
Observe como o exemplo que você encontrou para shellscripts especifica o diretório no qual o script está localizado (essa é a ./
parte, que significa "diretório atual").
./myscript.py
./myscript.sh
./myscript.rb
(Observe também: como você não está informando ao sistema qual intérprete usar, o script1ª linhadeve fazer isso em vez disso. Normalmente deveria dizer #!/usr/bin/env python
.)
Portanto, a resposta é: sudo e nice seguem exatamente as mesmas regras descritas acima dos comandos regulares. Por exemplo, você pode executar o script assim:
Pitãomeuscript.py sudoPitãomeuscript.py legal -n -20nómeuscript.js sudo legal -n -20festameuscript.sh
O mesmo vale para a invocação direta do script:
./teste.py sudo./teste.pl legal -n -20./teste.js sudo legal -n -20./teste.sh