Napisałem scenariusz. Kiedy się uruchomi, nie przestanie i nadal pobiera dane z Internetu. Mogę to nazwać w ten sposób:
cd /User/Desktop/project/internetScanner/
python3 main.py start
Ale chciałbym to nazwać bezpośrednio z terminala w ten sposób w miejscu docelowym:
internetScanner start
Jak mogę to zrobić?
linux
bash
python
shell-script
Ted Wong
źródło
źródło
Odpowiedzi:
Prawdopodobnie powinieneś zmienić nazwę pliku
main.py
nainternetScanner
. Rozszerzenia * nix są całkowicie opcjonalne. To nie powinno mieć znaczenia tutaj.Następnie dodaj następujący wiersz do tego pliku, na samym początku:
Zapewni to, że gdy powłoka wykona plik, będzie wiedział, jak wykorzystać
python3
interpretację treści. Jest to znane jako Shebang . Teraz uczyń plik wykonywalnym:Możesz teraz uruchomić swój program z poziomu
/User/Desktop/project/internetScanner/
:Twój program będzie działał na pierwszym planie i będzie kontynuował działanie do momentu naciśnięcia przycisku Ctrl- C. Jeśli nie chcesz tego, możesz również uruchomić program w tle, dodając znak ampersand po poleceniu:
Pozwoli to na uruchomienie programu, ale możesz nadal używać powłoki. To się nazywa kontrolę pracy, a tam prosty poradnik o tym tutaj .
Jeśli chcesz teraz móc uruchomić program z dowolnego miejsca w systemie, musisz dodać
internetScanner
katalog do swojegoPATH
: Czym są PATH i inne zmienne środowiskowe i jak mogę je ustawić lub używać?źródło
X &
nie odłącza procesu od powłoki kontrolnej, jedynie tworzy proces w tle, co oznacza, że jeśli powłoka wyjdzie, otrzyma sygnał TERM; więc jeśli nie chcemy, że należy użyć odłączenia ,detach ./internetScanner start
.nohup
,disown
lubat
, i tak dalej. Jak całkowicie odłączyć proces od terminalu?main.py
tak długo, jak jest dowiązany symbolicznie dointernetScanner
gdzieś w $ PATH.Zakładając, że nie
/User/Desktop/project/internetScanner/
są potrzebne żadne inne pliki , jeśli chcesz zainstalować dla jednego użytkownika, link (ln -s
)main.py
do$HOME/bin/internetScanner
.$HOME/bin
Najpierw prawdopodobnie będziesz musiał uruchomić mkdir .Przy następnym logowaniu
$HOME/bin
prawdopodobnie zostanie dodany do Twojej ŚCIEŻKI. Jeśli chcesz, aby był dostępny dla wszystkich użytkowników, skopiuj go do/usr/local/bin
.Jeśli trzeba wykonać
/User/Desktop/project/internetScanner/
, albo zacznij od importowaniaos
i wywoływanialub utwórz skrypt uruchamiający w
$HOME/bin
lub,/usr/local/bin
który zmienia/User/Desktop/project/internetScanner/
i wykonuje skrypt.źródło
Wstaw
alias internetScanner "python /User/Desktop/project/internetScanner/main.py"
plik .aliases (dla csh). Aby uzyskać bash, wstawalias internetScanner="python /User/Desktop/project/internetScanner/main.py"
.bashrc. Następnie możesz zacząć korzystać z InternetScanner z dowolnego miejsca.źródło
.aliases
pliku. Czy to coś standardowego dla Bash? czy musisz jawnie go zdobyć w swoim.bashrc
?