Czy istnieje sposób na wygenerowanie pełnego wykazu procesów w solaris bez przyciętych linii? Wypróbowałem ps
polecenie z następującymi argumentami:
-f Generuje pełną listę. (Patrz poniżej znaczenie kolumn na pełnej liście ing.)
-l Generuje długą listę. (Patrz poniżej.)
Więc oba wydają się robić to, co chcę, jednak w dalszej części strony ps ps znajduję to:
args Polecenie ze wszystkimi argumentami jako strunowy. Implementacja może zostać obcięta ta wartość do szerokości pola; to jest zależne od implementacji, czy jakiekolwiek następuje dalsze obcinanie. To jest nieokreślony, czy ciąg reprezentowana jest wersja argumentu lista, jak została przekazana do polecenia kiedy się zaczął, lub jest wersją argumenty, ponieważ mogły zostać zmodyfikowane przez aplikację. Aplikacje nie mogą zależy od możliwości ich modyfikacji lista argumentów i ta modyfikacja zostanie odzwierciedlone w wynikach ps. Implementacja Solaris ogranicza ciąg do 80 bajtów; ciąg jest wersja listy argumentów, jaka była przekazane do polecenia, gdy się uruchomiło.
Co w zasadzie mówi, że dane wyjściowe zostaną obcięte i nic nie mogę na to poradzić. Więc idę tutaj. Z pewnością inni ludzie napotkali ten problem, a może nawet potrafili go obejść. Zgaduję, że ps nie może tego zrobić, więc muszę użyć innych narzędzi, aby to zrobić. Czy to jest dokładne?
ps
poleceniu? Jeśli tak, zaktualizuj pytanie, aby było bardziej zrozumiałe.Odpowiedzi:
możesz spróbować
daje to listę wszystkich argumentów
lub użyj innego ps. Jeśli działa jako root (lub jakikolwiek użytkownik z wystarczającymi uprawnieniami do tego)
da ci wszystkie argumenty. Jego część SUNWscpu, „Zgodność źródła, (Usr)”
źródło
pargs
pokazuje wewnętrzną kopię argumentów wiersza poleceń (i opcjonalnie środowisko). Dobrze wiedzieć, dziękuję!Jądro nie jest wymagane do śledzenia argumentów wiersza poleceń. Kiedy program jest uruchamiany przez
execve
wywołanie, jądro musi skopiować argumenty do pamięci procesu (aby były dostępneargv
na przykład jak w programie C). Następnie jądro może odrzucić pamięć używaną do przechowywania początkowych argumentów wiersza poleceń. Proces może zastąpić swoją kopię argumentów. Więc po prostu może nie być śladu argumentów.Niektóre warianty uniksowe przechowują kopię argumentów w jakiejś formie. Solaris udostępnia niektóre dane
/proc/$pid
. Począwszy od OpenSolaris 2009.06, jedyny ślad argumentów znajduje się w/proc/$pid/psinfo
, gdzie są one połączone ze spacjami pomiędzy nimi (więc nie można rozróżnić międzyfoo "one" "two"
ifoo "one two"
), a wynikowy ciąg jest obcinany do 80 bajtów. To pole w/proc/$pid/psinfo
tym jestps
drukowane wargs
kolumnie.Nawiasem mówiąc, opcje
-f
i-l
kontrolują, które pola są drukowane, a nie to, czy pola są obcinane do pewnej szerokości.źródło
ps -e
podaje listę wszystkich uruchomionych procesów. Jest też tops -elf
.źródło
W zależności od tego, którego
ps
polecenia używasz, używamźródło
prstat
da ci aktualnie uruchomione procesy wraz z ich cenami i wykorzystaniem procesora.źródło