2016-01-13 3 views
3

Как создать функции и программное обеспечение для моего Linux-сервера? Позвольте мне объяснить это чуть подробнее.Вызов функций Python на уровне скрипта из командной строки Linux

Итак, для моего Linux-сервера, с которым я обращаюсь к моему SSH-клиенту, я сделал несколько сценариев Python, которые работают нормально, но я действительно хочу, чтобы эти скрипты Python постоянно работали, чтобы я мог выполнять функции, которые я создал в сценарии (например, «def time(): ...»), просто набрав «время» в командной строке, а не запустив скрипт с ./script-name.py, а затем введите "время". Мне нужно каким-то образом установить мои файлы Python в систему?

Я изо всех сил пытался найти Google, потому что я не совсем понял, что искать, а результаты, которые пришли, не были действительно связаны с моей просьбой. Я нашел модуль cmd Python и научился создавать интерпретаторы cmd, однако, чтобы получить доступ к командам, определенным в интерпретаторе cmd, мне пришлось сначала запустить скрипт, который, как я объяснил выше, не то, что я есть находясь в поиске.

Как я могу сделать функции Python на уровне скрипта вызываемыми из командной строки Linux?

+1

Lookup 'supervisord' также, это очень расплывчато. –

+0

Вы можете просто добавить функции к вашим '.bashrc' или'/etc/profile', например 'function time() {python /my/dir/my-script.py}' – cat

+0

('time' - очень плохое имя, потому что он затеняет * команду * 'время' и для ее возврата вам придется вводить' \ time' вместо этого.) – cat

ответ

4

Если вы используете Python, вам все равно нужно запустить интерпретатор, но вы можете сделать это автоматически.

Начните с создания исполняемого файла. Выполните эту команду в оболочке:

chmod +x script-name.py 
ls -l script-name.py 

Выход ls должен выглядеть следующим образом (обратите внимание на x с в левой колонке):

-rwxr-xr-x 1 me me  4 Jan 14 11:02 script-name.py 

Теперь добавьте interpreter directive линию на верхняя часть файла сценария - это говорит оболочке запустить Python интерпретировать сценарий:

#!/usr/bin/python 

Затем добавить код в конец файла, ок LLS ваша функция:

if __name__ == '__main__': 
    time() 

В if заявление проверяет, является ли это файл, который выполняется. Это означает, что вы все равно можете импортировать свой модуль из другого файла Python, если функция time() автоматически вызывается, если хотите.

Наконец, вам нужно поместить свой скрипт в исполняемый путь.

mkdir -p $HOME/bin 
mv script-name.py $HOME/bin/ 
export PATH=$HOME/bin:$PATH 

Теперь вы должны иметь возможность запускать script-name.py, и вы увидите вывод функции time(). Вы можете переименовать свой файл в любое удобное для вас время; вы даже можете удалить расширение .py.

Дополнительные вещи, которые вы можете сделать:

  • Используйте argparse module добавить аргументы командной строки, напримертак что вы можете запустить script-name.py time выполнить time() функцию
  • Поместите сценарий в общесистемного пути, как /usr/local/bin или
  • Добавьте export PATH=$HOME/bin:$PATH строку в .bashrc так, что это происходит по умолчанию, когда вы войти
1

Ответ выше, более полный и информативный, чем мой. Я просто хотел предложить быструю и грязную альтернативу.

echo "alias time='<your script> time'" > ~/.bashrc 
bash 

Как я уже говорил, быстро и грязно.

Смежные вопросы