Ich habe ein Drehbuch geschrieben. Wenn es startet, hört es nicht auf und es werden immer wieder Daten aus dem Internet abgerufen. Ich kann es so nennen:
cd /User/Desktop/project/internetScanner/
python3 main.py start
Aber ich möchte es direkt vom Terminal aus so anrufen, innerhalb des Ziels:
internetScanner start
Wie kann ich das machen?
linux
bash
python
shell-script
Ted Wong
quelle
quelle
Antworten:
Sie sollten wahrscheinlich die Datei umbenennen
main.py
zuinternetScanner
. Erweiterungen auf * nix sind rein optional. Es sollte hier keine Rolle spielen.Fügen Sie dieser Datei gleich zu Beginn die folgende Zeile hinzu:
Dadurch wird sichergestellt, dass die Shell bei der Ausführung der Datei
python3
den Inhalt interpretieren muss. Dies ist als Shebang bekannt . Machen Sie die Datei jetzt ausführbar:Sie können Ihr Programm jetzt von innen ausführen
/User/Desktop/project/internetScanner/
:Ihr Programm wird im Vordergrund ausgeführt und läuft weiter, bis Sie Ctrl- drücken C. Wenn Sie dies nicht möchten, können Sie das Programm auch im Hintergrund starten, indem Sie nach dem Befehl ein kaufmännisches Und hinzufügen:
Dadurch kann Ihr Programm ausgeführt werden, Sie können Ihre Shell jedoch weiterhin verwenden. Dies wird Jobsteuerung genannt, und es ist ein einfaches Tutorial über sie hier .
Wenn Sie das Programm jetzt von überall auf dem System ausführen möchten, müssen Sie das
internetScanner
Verzeichnis zu Ihrem Verzeichnis hinzufügenPATH
: Was sind PATH und andere Umgebungsvariablen und wie kann ich sie festlegen oder verwenden?quelle
X &
Trennt den Prozess nicht von der steuernden Shell, sondern hinterlegt den Prozess nur im Hintergrund. Wenn diese Shell beendet wird, wird das TERM-Signal an sie gesendet. Wenn Sie also nicht möchten, dass Sie trennen verwenden ,detach ./internetScanner start
.nohup
,disown
oderat
, et cetera. Wie trenne ich einen Prozess vollständig vom Terminal?main.py
werden kann, solange es mitinternetScanner
irgendwo in $ PATH verknüpft ist .Angenommen, es werden keine weiteren Dateien
/User/Desktop/project/internetScanner/
benötigt, wenn Sie für einen einzelnen Benutzer installieren möchten, klicken Sie auf link (ln -s
)main.py
zu$HOME/bin/internetScanner
. Sie müssen wahrscheinlich$HOME/bin
zuerst mkdir .Wenn Sie sich das nächste Mal anmelden,
$HOME/bin
wird dies wahrscheinlich Ihrem PATH hinzugefügt. Wenn Sie möchten, dass es für alle Benutzer verfügbar ist, kopieren Sie es nach/usr/local/bin
.Wenn es ausgeführt werden muss
/User/Desktop/project/internetScanner/
, beginnen Sie entweder mit dem Importierenos
und dem Aufrufenoder erstellen Sie ein Startskript in
$HOME/bin
oder/usr/local/bin
das/User/Desktop/project/internetScanner/
das Skript ändert und ausführt.quelle
alias internetScanner "python /User/Desktop/project/internetScanner/main.py"
Fügen Sie die .aliases-Datei ein (für csh).alias internetScanner="python /User/Desktop/project/internetScanner/main.py"
Geben Sie für bash .bashrc ein. Danach können Sie internetScanner von überall aus starten.quelle
.aliases
Datei gehört. Ist das etwas Standard für Bash? oder müssen Sie es explizit in Ihrem beziehen.bashrc
?