Я написал сценарий. Когда он начинается, он не останавливается и продолжает получать данные из Интернета. Я могу назвать это так:
cd /User/Desktop/project/internetScanner/
python3 main.py start
Но я хотел бы позвонить прямо из терминала, например, в пределах пункта назначения:
internetScanner start
Как я могу это сделать?
linux
bash
python
shell-script
Тед Вонг
источник
источник
Ответы:
Вам, вероятно, следует переименовать ваш файл
main.py
вinternetScanner
. Расширения в * nix не являются обязательными. Это не должно иметь значения здесь.Затем добавьте следующую строку в этот файл, в самом начале:
Это гарантирует, что когда оболочка выполнит файл, она будет знать, как использовать
python3
для интерпретации содержимого. Это известно как Шебанг . Теперь сделайте файл исполняемым:Теперь вы можете запустить вашу программу изнутри
/User/Desktop/project/internetScanner/
:Ваша программа будет работать на переднем плане и продолжаться, пока вы не нажмете Ctrl- C. Если вы не хотите этого, вы также можете запустить программу в фоновом режиме, добавив амперсанд после команды:
Это позволит запустить вашу программу, но вы можете продолжать использовать вашу оболочку. Это называется управление заданиями, и есть простой учебник об этом здесь .
Если вы теперь хотите иметь возможность запускать программу из любой точки системы, вам нужно добавить
internetScanner
каталог в свой каталогPATH
: что такое PATH и другие переменные среды, и как я могу их установить или использовать?источник
X &
не отсоединяет процесс от управляющей оболочки, он только загораживает процесс, то есть, если эта оболочка завершает работу, ему отправляется сигнал TERM; так что если вы не хотите , что вы должны использовать отсоединение ,detach ./internetScanner start
.nohup
,disown
илиat
, и так далее. Как полностью отсоединить процесс от терминала?main.py
до тех пор, пока он имеет символическую ссылкуinternetScanner
где-то в $ PATH.Предполагая, что другие файлы
/User/Desktop/project/internetScanner/
не нужны, если вы хотите установить для одного пользователя, ссылка (ln -s
)main.py
на$HOME/bin/internetScanner
. Вы, вероятно, должны$HOME/bin
сначала MKDIR .В следующий раз, когда вы войдете,
$HOME/bin
вероятно, будет добавлен в ваш PATH. Если вы хотите, чтобы он был доступен для всех пользователей, скопируйте его в/usr/local/bin
.Если он должен выполняться
/User/Desktop/project/internetScanner/
, либо начните с импортаos
и вызоваили создать сценарий запуска
$HOME/bin
или/usr/local/bin
изменить/User/Desktop/project/internetScanner/
или выполнить сценарий.источник
Поместите
alias internetScanner "python /User/Desktop/project/internetScanner/main.py"
в файл .aliases (для csh). Для bash поместитеalias internetScanner="python /User/Desktop/project/internetScanner/main.py"
в .bashrc. После этого вы можете использовать InternetScanner начать с любого места.источник
.aliases
файле. Это что-то стандартное для Bash? или вы должны явно указать его в своем.bashrc
?