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.
Stéphane Chazelas,
1
@jofel: Co jeśli uruchomiony jest poniższy skrypt i przez pomyłkę wykonałem Ctrl-C. Czy mój skrypt zostanie wykonany, czy też zostanie zakończony? Np .: sh sys-snap.sh &
Hussain7
2
@ Hussain7 Ctrl-C jest zawsze wysyłany do bieżącego procesu na pierwszym planie. Jeśli skrypt powłoki zostanie uruchomiony, &a zatem w tle, pojawi się tylko nowy monit powłoki.
jofel
2
czy podwójne znaki handlowe &&różnią się od pojedynczych znaków handlowych &?
Charlie Parker,
7
@CharlieParker Tak, „&&” to funkcja „i”. Polecenie po && jest wywoływane tylko wtedy, gdy polecenie poprzedzające zakończy się powodzeniem. Przykład „true && echo works” output ”działa, ale„ false && echo no output ”nie wywołuje funkcji echa.
jofel
87
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):
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:
to świetna odpowiedź. jedną z możliwych sugestii jest dodanie tego 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.
Tommy
@Drav, Czy to prawda, że jobsto zawsze zwróci puste, jeśli jest to pierwsze polecenie?
Pacerier,
Zauważ, że użycie &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 .
vadasambar
4
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 4Mar1316: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ń.
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&
?Odpowiedzi:
sh
jest domyślną powłoką kompatybilną z Bourne (zwykle bash lub dash)sys-snap.sh
to skrypt powłoki, który zawiera polecenia, któresh
wykonuje. 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/sh
lub podobnej), możesz go wykonać za pomocąchmod +x sys-snap.sh
i uruchom go bezpośrednio, używając,./sys-snap.sh
jeś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-Z
i kontynuować w tle za pomocąbg
(lub na pierwszym planie za pomocąfg
). Aby uzyskać więcej informacji, zobacz Kontrola zadańźródło
sh
w zwykle tylkobash
albodash
w 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 control
UNIX.&
Informuje powłokę, aby umieścić polecenia w tle. Oznacza to, że nadal uruchamiasys-snap.sh
polecenie, ale wraca do powłoki, umożliwiając kontynuowanie wykonywania poleceń równoległych.Możesz zobaczyć listę zadań aktualnie uruchomionych z
jobs
poleceniem. Możesz powrócić do polecenia (przenieść na pierwszy plan) za pomocąfg
polecenia. 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 wstrzymaniesys-snap.sh
i powrót do monitu. Można wtedy tło to (tak, jakbyś wydał go z&
) zbg
polecenia 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
):Możesz je w tle i na pierwszym planie, używając ich numeru zadania,
%1
będziesys-snap.sh
i%2
będzieanother-script.sh
. Jeśli użyjesz argumentówfg
lubbg
bez nich, wykona polecenie dla zadania oznaczonego przez+
wjobs
powyższym wyniku.fg %1
będzie można umieścić
sys-snap.sh
z powrotem na pierwszy plan, pozostawiającanother-script.sh
w tle.Możesz wydać sekwencję Ctrl- Cdo uruchomionych zadań bez konieczności przedkładania ich za pomocą
kill
polecenia,kill %1
wyśle odpowiednik Ctrl- Cdosys-snap.sh
.Jeśli używasz powłoki bash,
man bash
polecenie 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 jakperl
lubphp
itp. Zwykle służy do zapewnienia jasności, że w tym przypadku jest.sh
to 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 jakless
polecenie) jest Shebang . W pierwszym wierszu prawdopodobnie znajdziesz jeden z: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 wykonywalnychmod
, aby można go było uruchomić jako polecenie. Jeśli uprawnienia nie zostały ustawione,shebang
nie ma to wpływu, ponieważ albo wystąpiłby błąd:lub jeśli uruchomiłeś go jawną ścieżką
./sys-snap.sh
(.
co oznacza bieżący katalog roboczy), otrzymasz:Inną alternatywą jest pozostawienie go bez wykonywania uprawnień i wyraźne poproszenie / bin / sh o uruchomienie:
źródło
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.jobs
to zawsze zwróci puste, jeśli jest to pierwsze polecenie?&
na końcu polecenia powoduje jedynie odłączeniestdin
(ale niestdout
lubstderr
), co oznacza, że jeśli twoje polecenie / skrypt działa w tle, ale pisze dostdout
, możesz napotkać sytuację, w którejCtrl + c
nie zatrzyma wyjścia, ale będziesz w stanie wpisywać polecenia. Wynika to z tego, że proces w tle pisze do,stdout
ale nie można go zatrzymać, ponieważ nie działa na pierwszym planie. Więcej informacji tutaj .sh
jest skorupą. Która skorupa dokładnie zależy od systemu. Przykład dla systemu, który używabash
jako standardowej powłoki:sys-snap.sh
będzie pewnego rodzaju skryptem powłoki, więcsh sys-snap.sh
wykona 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ń.źródło
Czy twój serwer jest hostgatorem?
Skrypt
sys-snap.sh
jest 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ódło