it-swarm-eu.dev

Jak mohu získat úplný seznam procesů v Solaris bez zkrácených linií?

Existuje způsob, jak vygenerovat úplný seznam procesů v systému Solaris bez zkrácených linií? Vyzkoušel jsem příkaz ps s následujícími argumenty:

 -f Vytvoří úplný seznam. (Viz níže 
 Význam sloupců v úplném seznamu - 
 Ing.) 
 -l Vytvoří dlouhý výpis. (Viz. níže.)

Zdá se tedy, že oba dělají to, co chci, ale dále na stránce ps ps, najdu toto:

 
 args Příkaz se všemi argumenty jako řetězec 
. Implementace může zkrátit 
 Tuto hodnotu na šířku pole; Závisí na implementaci 
, zda dojde k dalšímu zkrácení 
. Není specifikováno, zda reprezentovaný řetězec 
 Je verzí seznamu argumentů 
, Jak byl předán příkazu 
, Když byl spuštěn, nebo je verzí argumenty 
, které mohly být aplikací změněny 
. Aplikace nemohou 
 Záviset na tom, že budou moci upravit svůj seznam 
 Argumentů a že se tato modifikace - 
 Promítne do výstupu ps. 
 Implementace Solaris omezuje 
 řetězec na 80 bajtů; řetězec je 
 verzí seznamu argumentů tak, jak byl 
 předán příkazu, když byl spuštěn. 

Což v podstatě říká, že výstup bude zkrácen a s tím nemůžu nic dělat. Takže jdu sem. Určitě ostatní lidé narazili na tento problém a možná dokonce mají cestu kolem něj. Hádám, že to ps nemůže udělat, a tak k tomu potřebuji použít jiné nástroje. Je to přesné?

57
gabe.

můžete to zkusit

pargs <PID>

tím získáte seznam všech argumentů

nebo použít jiné ps. Pokud běží jako root (nebo jakýkoli uživatel s dostatečnými oprávněními)

/usr/ucb/ps auxww

vám dá všechny argumenty. Jeho součást SUNWscpu, „Compatibility Source, (Usr)“

62
Marcel G

Jádro není nutné pro sledování argumentů příkazového řádku. Když je program spuštěn pomocí volání execve, musí jádro zkopírovat argumenty do procesní paměti (aby byly například k dispozici jako argv v programu C). Poté může jádro zahodit paměť používanou k uložení počátečních argumentů příkazového řádku. Proces smí přepsat jeho kopii argumentů. Takže nemusí existovat žádná stopa argumentů.

Některé unixové varianty uchovávají kopii argumentů v nějaké podobě. Solaris vystavuje některá data v /proc/$pid. Od OpenSolaris 2009.06 je jediná stopa argumentů v /proc/$pid/psinfo, kde jsou zřetězeny mezerami mezi nimi (takže není možné rozlišovat mezi foo "one" "two" a foo "one two") a výsledný řetězec bude zkrácen na 80 bajtů. Toto pole v /proc/$pid/psinfo je to, co ps tiskne ve sloupci args.

Mimochodem, -f a -l volby určují, která pole budou vytištěna, nikoli zda budou pole zkrácena na určitou šířku.

ps -e Uvádí seznam všech spuštěných procesů. Také je tu tento ps -elf.

2
ari

Podle toho, jaký příkaz ps použijete, používám

ps -auxw
0
Wes

prstat vám poskytne aktuálně spuštěné procesy spolu s jejich pids a využitím CPU.

0
user41052