Portál AbcLinuxu, 12. května 2025 13:13

Dotaz: Bash a procesy -l

David Watzke avatar 6.1.2006 14:42 David Watzke | skóre: 74 | blog: Blog... | Praha
Bash a procesy -l
Přečteno: 291×
Odpovědět | Admin
Ahoj. Po delší práci v Bashi mám ve výpisu ps ax spousty procesů "-l". Je to jen kvůli překlepům a podobně. Navíc se zdá, že to bere trochu paměti a taky se zbytečně zvětší seznam procesů. Jednou jsem to zkoušel killnout a... dopadl jsem špatně. :-) Dá se nějak zabránit jejich vytváření? Žerou paměť, nebo se tak jen tváří?
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.1.2006 15:12 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co to je proces "-l"? Ještě jsem to nikdy neviděl.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
David Watzke avatar 6.1.2006 15:23 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
$ ps a | grep -- -l
 5566 pts/0    Ss     0:00 -l
31941 pts/1    Ss+    0:00 -l
 4171 pts/2    Ss     0:00 -l
 6081 pts/2    S+     0:00 grep --color=auto -- -l
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
6.1.2006 15:34 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
A příklad jak to děláš by nebyl? Na to musí být fakt talent :-)
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
6.1.2006 15:39 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Můžu se zeptat, jak přesně se ti ty procesy tvoří? Obávám se, že jsem tohle nikdy neviděl. A co se vypíše třeba při kill 5566, nebo kill -9 5566?
When your hammer is C++, everything begins to look like a thumb.
David Watzke avatar 6.1.2006 15:43 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Jak se tvoří? Třeba (jen mě to čistě náhodou napadlo)
$ hh
-l: hh: command not found
ale v tuhle chvíli se tam novej nevytvořil. Je to jen někdy, zkusím to vypozorovat.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 6.1.2006 15:44 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Jo a ještě co se stane... no, zmizí mi jeden tab. ;-) Prostě zabije shell.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 6.1.2006 15:47 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Ty procesy jsou tam místo bashe! Vytvořil jsem hafo tabů (v YaKuake) a hele:
$ ps ax | grep -- -l
31941 pts/1    Ss+    0:00 -l
 4171 pts/2    Ss+    0:00 -l
 9133 pts/0    Ss+    0:00 -l
 9159 pts/3    Ss+    0:00 -l
 9166 pts/4    Ss+    0:00 -l
 9171 pts/5    Ss+    0:00 -l
 9174 pts/6    Ss+    0:00 -l
 9179 pts/7    Ss+    0:00 -l
 9183 pts/8    Ss+    0:00 -l
 9188 pts/9    Ss+    0:00 -l
 9195 pts/10   Ss+    0:00 -l
 9200 pts/11   Ss+    0:00 -l
 9204 pts/12   Ss+    0:00 -l
 9209 pts/13   Ss+    0:00 -l
 9217 pts/14   Ss     0:00 -l
 9238 pts/14   S+     0:00 grep --color=auto -- -l
a když spustím xterm, je tam bash. Huh.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
6.1.2006 15:50 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Hmm, a co ti vypíše echo $1? To skoro vypadá, že se u tebe jmenuje bash -l :-D. Správný výpis je totiž
$ hh
bash: hh: command not found
Nemáš někde nějaký symlink, nebo něco rakového?
When your hammer is C++, everything begins to look like a thumb.
David Watzke avatar 6.1.2006 15:57 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
echo $1 nevypíše nic. Bash se nejmenuje -l, není to ani symlink ani alias. V xtermu je to jak píšeš, v tty je -bash. V Yakuake to dělá jen jako user, po sux - už ne. V .bashrc mám jen
export GTK2_RC_FILES=$HOME/.gtkrc-2.0
To je AFAIK proto, abych měl Qt skin u GTK+ aplikací.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 6.1.2006 16:00 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Takže bug v YaKuake... zajímavé je, že se tak děje jen před su. Ještě zajímavější, že Konsole to nedělá (Yakuake využívá konsole_part).
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
6.1.2006 17:51 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Takže bug v YaKuake... zajímavé je, že se tak děje jen před su.
Protože su spustí další shell, kterému nastaví nultý parametr (jméno programu) správně.
David Watzke avatar 6.1.2006 18:05 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Aha...
[david@amd64 ~] $ echo $0
-l

root@amd64 ~ [ r10.61G h43.56G p129M s1035M | 1/88 0.37 ]
[17:21] # echo $0
-/bin/bash
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
6.1.2006 18:22 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Ježíš, na co jsem zase myslel, ta moje původní rada měla být echo $0 a ne 1 :-D, díky za opravu.
When your hammer is C++, everything begins to look like a thumb.
6.1.2006 17:27 HynaDJ | skóre: 14 | Mutěnice
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jak se tam ty procesy dostanou?
David Watzke avatar 6.1.2006 17:43 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Přečti si diskusi, je to vyřešené. Dělá to jen Yakuake a jen pod userem. :/ Možná to přeci jen bude něco u mně. Může tohle chování nějaký Yakuake-user potvrdit?
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 6.1.2006 18:18 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Odpovědět | | Sbalit | Link | Blokovat | Admin
OK, takže když sosnete zdrojáky, vlezte do src/ a tam editujte část
        args.append("-l");
        shell = getenv("SHELL");
        if (shell == NULL || *shell == '\0')
            shell = "/bin/sh";
na
        args.append("-/bin/bash");
        shell = getenv("SHELL");
        if (shell == NULL || *shell == '\0')
            shell = "/bin/bash";
To mi pomohlo...
[david@amd64 ~] $ hh
bash: hh: command not found
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 6.1.2006 18:19 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Zapomněl jsem dodat, že v souboru shell_session.cpp. :-)
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
6.1.2006 18:25 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Nechci nic říkat, ale ten poslední řádek jsi tam měl imho nechat, protože například na FreeBSD je bash v /usr/local/bin/, takže by to teď fungovalo jen na Linuxu.
When your hammer is C++, everything begins to look like a thumb.
David Watzke avatar 6.1.2006 18:27 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Oops... já si to myslel. :-( Ale co, já a hrabat se v kódu Céčka. Sotva napíšu printf. Takže na to, že je to můj první patch, můžeme být rádi, že to nemaže hardisk...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
6.1.2006 18:41 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
To neber jako kritiku, je dobré, že jsi se do toho pustil ... zkus to ještě poslat vývojářům. Jenom jsem upozornil na to první, co mi padlo do oka.
Takže na to, že je to můj první patch, můžeme být rádi, že to nemaže hardisk...
:-D
When your hammer is C++, everything begins to look like a thumb.
David Watzke avatar 6.1.2006 18:44 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Neberu. :-) Dělám si srandu.
vývojářům
Je jenom jeden a právě jsem mu to poslal. :-)
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
6.1.2006 18:33 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Ona i ta první změna je taková divná, chyba je IMHO v tom, že na místě nultého parametru (jméno shellu, takže třeba proměnná shell) se předává něco, co mělo být první parametr. Takže změna by mohla být třeba:
-        args.append("-l");
         shell = getenv("SHELL");
         if (shell == NULL || *shell == '\0')
             shell = "/bin/sh";
+        args.append(shell);
+        args.append("-l");
Ty zdrojáky jsem nečetl, takže netuším jak ten program ve skutečnosti funguje...
David Watzke avatar 6.1.2006 18:42 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Máš pravdu... to funguje též:
[david@amd64 ~] $ echo $0
/bin/bash
[david@amd64 ~] $ hh
bash: hh: command not found
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
6.1.2006 18:57 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Vylepšení, aby v $0 bylo jenom jméno shellu, jako v ostatních terminálech
-        args.append("-l");
         shell = getenv("SHELL");
         if (shell == NULL || *shell == '\0')
             shell = "/bin/sh";
+        args.append(strrchr(shell, '/') ? strrchr(shell, '/') : shell);
+        args.append("-l");
David Watzke avatar 6.1.2006 19:12 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
x86_64-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I. -I.. -I../.
 -I../src -I/usr/kde/3.5/include -I/usr/qt/3/include
 -I/usr/X11R6/include   -DQT_THREAD_SUPPORT  -D_REENTRANT 
 -Wnon-virtual-dtor -Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500
 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts -Wall -W
 -Wpointer-arith -Wwrite-strings -DNDEBUG -DNO_DEBUG -O2 -O2
 -march=athlon64 -fomit-frame-pointer -pipe -Wformat-security
 -Wmissing-format-attribute -fno-exceptions -fno-check-new
 -fno-common  -c -o shell_session.o shell_session.cpp
shell_session.cpp: In constructor `ShellSession::ShellSession(QWidget*, const char*)':
shell_session.cpp:50: error: wrong type argument to unary minus
/usr/kde/3.5/bin/dcopidl2cpp --c++-suffix cpp --no-signals --no-stub
 dcop_interface.kidl
x86_64-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I. -I.. -I../. -I../src
 -I/usr/kde/3.5/include -I/usr/qt/3/include -I/usr/X11R6/include  
 -DQT_THREAD_SUPPORT  -D_REENTRANT  -Wnon-virtual-dtor -Wno-long-long
 -Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align
 -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith
 -Wwrite-strings -DNDEBUG -DNO_DEBUG -O2 -O2 -march=athlon64
 -fomit-frame-pointer -pipe -Wformat-security
 -Wmissing-format-attribute -fno-exceptions -fno-check-new
 -fno-common  -c -o dcop_interface_skel.o dcop_interface_skel.cpp
make[2]: *** [shell_session.o] Error 1
make[2]: *** Waiting for unfinished jobs....
tabbed_widget.cpp: In member function `int TabbedWidget::removeItem(int)':
tabbed_widget.cpp:95: warning: comparison between signed and unsigned
 integer expressions
tabbed_widget.cpp: In member function `void TabbedWidget::selectNextItem()':
tabbed_widget.cpp:117: warning: comparison between signed and
 unsigned integer expressions
tabbed_widget.cpp: In member function `virtual void TabbedWidget::mouseReleaseEvent(QMouseEvent*)':
tabbed_widget.cpp:275: warning: comparison between signed and
 unsigned integer expressions
tabbed_widget.cpp:277: warning: comparison between signed and
 unsigned integer expressions
make[2]: Leaving directory `/var/tmp/portage/yakuake-2.7.3/work/yakuake-2.7.3/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/yakuake-2.7.3/work/yakuake-2.7.3'
make: *** [all] Error 2
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
6.1.2006 19:26 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
WTF? Nezkopírovals tam i ten první odebíraný řádek s minusem na začátku?
David Watzke avatar 6.1.2006 19:38 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l kvůli překlepům
Je, jak to víš... :-( Jdu raději hrát, dělám akorát škodu...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 22.3.2006 20:06 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash a procesy -l
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vyřešeno ve verzi 0.7.5. Sranda je, že se tam nemuselo nic modifikovat... stačilo to celý zakomentovat :-D
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.