sh sys-snap.sh &
Co to jest sh? Co to jest sys-snap.sh? Dlaczego powinienem umieścić &na końcu linii? Czy ktoś może wyjaśnić składnię?
Bez &skryptu nie wróci do monitu, dopóki nie naciśnie Ctrl+ C. Z &mogę nacisnąć Enter i to działa.
sh sys-snap.sh &
Co to jest sh? Co to jest sys-snap.sh? Dlaczego powinienem umieścić &na końcu linii? Czy ktoś może wyjaśnić składnię?
Bez &skryptu nie wróci do monitu, dopóki nie naciśnie Ctrl+ C. Z &mogę nacisnąć Enter i to działa.
Odpowiedzi:
shjest domyślną powłoką kompatybilną z Bourne (zwykle bash lub dash)
sys-snap.shto skrypt powłoki, który zawiera polecenia, które shwykonuje. Ponieważ nie publikujesz jego treści, mogę tylko zgadywać z jego nazwy, co robi. Mogę znaleźć skrypt związany z CPanel o tej samej nazwie, który tworzy plik dziennika ze wszystkimi bieżącymi procesami, bieżącym zużyciem pamięci, statusem bazy danych itp. Jeśli skrypt zaczyna się od linii shebang ( #!/bin/shlub podobnej), możesz go wykonać za pomocą chmod +x sys-snap.shi uruchom go bezpośrednio, używając, ./sys-snap.shjeśli znajduje się w bieżącym katalogu.
Dzięki &proces rozpoczyna się w tle, dzięki czemu można nadal używać powłoki i nie trzeba czekać aż skrypt zostanie zakończony. Jeśli go zapomnisz, możesz zatrzymać bieżący proces za pomocą Ctrl-Zi kontynuować w tle za pomocą bg(lub na pierwszym planie za pomocą fg). Aby uzyskać więcej informacji, zobacz Kontrola zadań
shw zwykle tylko bashalbo dashw systemach opartych na Linux (lub ostatnim OS / X). W przypadku BSD jest to zwykle inny wariant Ash (dash jest oparty na NetBSD sh, sam oparty na Almquist Shell) lub pochodnej pdksh. W komercyjnych Unices jest to zazwyczaj ksh88.
&a zatem w tle, pojawi się tylko nowy monit powłoki.
&&różnią się od pojedynczych znaków handlowych &?
Jest to znane jako job controlUNIX. &Informuje powłokę, aby umieścić polecenia w tle. Oznacza to, że nadal uruchamia sys-snap.shpolecenie, ale wraca do powłoki, umożliwiając kontynuowanie wykonywania poleceń równoległych.
Możesz zobaczyć listę zadań aktualnie uruchomionych z jobspoleceniem. Możesz powrócić do polecenia (przenieść na pierwszy plan) za pomocą fgpolecenia. Który powoduje powrót polecenia do stanu, w którym nie widzisz monitu i musisz go wydać Ctrl- Caby zabić proces. Możesz jednak zawiesić (wstrzymać) ten proces, wydając Ctrl- Z. Spowoduje to wstrzymanie sys-snap.shi powrót do monitu. Można wtedy tło to (tak, jakbyś wydał go z& ) z bgpolecenia i będzie wznowić działa od jego przerwał stan ten Ctrl- Zwłożył go.
Pamiętaj, że możesz mieć więcej niż jedno zadanie na raz (jak pokazano przez jobs):
[1]- Running sys-snap.sh &
[2]+ Running another-script.sh &
Możesz je w tle i na pierwszym planie, używając ich numeru zadania, %1będzie sys-snap.shi %2będzie another-script.sh. Jeśli użyjesz argumentów fglub bgbez nich, wykona polecenie dla zadania oznaczonego przez +w jobspowyższym wyniku.
fg %1
będzie można umieścić sys-snap.shz powrotem na pierwszy plan, pozostawiając another-script.shw tle.
Możesz wydać sekwencję Ctrl- Cdo uruchomionych zadań bez konieczności przedkładania ich za pomocą killpolecenia, kill %1wyśle odpowiednik Ctrl- Cdo sys-snap.sh.
Jeśli używasz powłoki bash, man bashpolecenie zawiera szczegółową sekcję pod sekcją „KONTROLA ZADAŃ”, która zawiera bardziej szczegółowe informacje.
Jeśli chodzi o nazwę sys-snap.sh, pod uniksowymi nazwami plików są dowolne (z kilkoma wyjątkami, takimi jak dynamiczne pliki ładujące). Nie ma wymogu posiadania określonych rozmiarów plików, aby działały one jako skrypt powłoki, wywoływały inne polecenia, takie jak perllub phpitp. Zwykle służy do zapewnienia jasności, że w tym przypadku jest .shto skrypt powłoki korzystający z powłoki Bourne'a /bin/sh.
Funkcjonalną częścią sys-snap.sh(gdy patrzysz na jej zawartość za pomocą czegoś takiego jak lesspolecenie) jest Shebang . W pierwszym wierszu prawdopodobnie znajdziesz jeden z:
#! /bin/sh
#! /bin/bash
#! /usr/local/bin/bash
lub podobne. Mówiąc najprościej, polecenie po #!(np. /bin/sh) Jest uruchamiane, a zawartość reszty pliku skryptu jest podawana do niego po linii na raz. Należy pamiętać, że plik musi być również ustawiony na wykonywalny chmod, aby można go było uruchomić jako polecenie. Jeśli uprawnienia nie zostały ustawione, shebangnie ma to wpływu, ponieważ albo wystąpiłby błąd:
bash: sys-snap.sh: command not found
lub jeśli uruchomiłeś go jawną ścieżką ./sys-snap.sh( .co oznacza bieżący katalog roboczy), otrzymasz:
bash: ./sys-snap.sh: Permission denied
Inną alternatywą jest pozostawienie go bez wykonywania uprawnień i wyraźne poproszenie / bin / sh o uruchomienie:
/bin/sh sys-snap.sh &
nohup, co robi, ponieważ jest często używane w połączeniu z, &aby rozpocząć proces i być w stanie zabić powłokę, która uruchomiła go bez zabijania procesu.
jobsto zawsze zwróci puste, jeśli jest to pierwsze polecenie?
&na końcu polecenia powoduje jedynie odłączenie stdin(ale nie stdoutlub stderr), co oznacza, że jeśli twoje polecenie / skrypt działa w tle, ale pisze do stdout, możesz napotkać sytuację, w której Ctrl + cnie zatrzyma wyjścia, ale będziesz w stanie wpisywać polecenia. Wynika to z tego, że proces w tle pisze do, stdoutale nie można go zatrzymać, ponieważ nie działa na pierwszym planie. Więcej informacji tutaj .
shjest skorupą. Która skorupa dokładnie zależy od systemu. Przykład dla systemu, który używa bashjako standardowej powłoki:
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 13 16:12 /bin/sh -> bash
$ sh --version
GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)
sys-snap.shbędzie pewnego rodzaju skryptem powłoki, więc sh sys-snap.shwykona skrypt powłoki.
&spowoduje uruchomienie procesu powłoki w tle. Bez &tego pozostanie na pierwszym planie, dopóki skrypt się nie skończy. Skrypt będzie działał w obu kierunkach, jest to tylko kwestia oczekiwania na zakończenie skryptu lub nie przed wykonaniem kolejnych poleceń.
Czy twój serwer jest hostgatorem?
Skrypt sys-snap.shjest specjalnym skryptem napisanym przez zespół hostgatora w celu zebrania wszystkich plików dziennika i danych dla systemu, więc wykorzystują jego dane wyjściowe do monitorowania i zbierania informacji o systemie.
&&różnią się od pojedynczych znaków handlowych&?