Титла: Затваряне на всички прозорци Публикувано от: XaugyTuH в Apr 21, 2005, 14:39 Идеята ми е да напиша скрипт, който убива всички процеси, които са стартирани след първоначалното зареждане на системата. Ясно, че ще е някаква врътка със ps, обаче нещо не мога да я измисля. Някой ако може - да помага. Благодаря предварително.
Титла: Затваряне на всички прозорци Публикувано от: Drakula в Apr 21, 2005, 16:12 Само една идейка, която ми хрумна веднага след първи прочит:
Всеки следващ стартиран процес би трябвало да е с pid по-голям от всеки предходно стартиран процес. Ако това е така (в което не съм съвсем сигурен) мисля че проблемът не е толкова труден Титла: Затваряне на всички прозорци Публикувано от: romeo_ninov в Apr 21, 2005, 16:22
А като стигне 65535 (или беше 32767) какво става? Номерата на процесите се рециклират, така че идеята може да се приложи, но можеш и да си омажеш нещата :-) Титла: Затваряне на всички прозорци Публикувано от: spawnman в Apr 21, 2005, 16:38 Болшинството от системните процеси (ако не и всички), би трябвало да са стартирани от супер потребителя, така че можеш да помислиш върху изхода на ps aux | grep root и да прецениш до колко те устройва или не
![]() Титла: Затваряне на всички прозорци Публикувано от: XaugyTuH в Apr 21, 2005, 18:36 ps aux | grep root предценявам, че не ме устройва, защото е ясно, че трябва да се убият процесите пуснати само от обикновеният потребител, който се е логнал в момента. Но... не всички. Като например КДЕ. Все пак целта е да се затворят прозорците, които са отворени след първоначалното зареждане на графичната среда.
Идеята с килването на процеси по-големи от определен номер също мисля, че ще се издъни, защото до колкото знам някои от системните процеси сами се рестартират понякога и макара да изглежда, че работят непрекъснато, на практика си сменят pid-овете. Все пак идеите до тук бяха много полезни, за да видим как няма да стане ![]() Титла: Затваряне на всички прозорци Публикувано от: в Apr 21, 2005, 18:51 гледаш uptime-а, заедно с дата/часа от ps output-а. това трябва да ти даде идея кое е пуснато по-късно
Титла: Затваряне на всички прозорци Публикувано от: XaugyTuH в Apr 21, 2005, 19:36 Как да го видя тоз таймаут? Виж какво ми дава
user@athome:~$ ps -eopid,user,fname,tmout PID USER COMMAND TMOUT 1 root init - 2 root keventd - 3 root ksoftirq - 4 root kswapd - 5 root bdflush - 6 root kupdated - 47 root kjournal - 131 root khubd - 581 root automoun - 706 root cupsd - 1227 109 dbus-dae - 1240 root mysqld_s - 1276 mysql mysqld - 1277 root logger - 1278 mysql mysqld - 1279 mysql mysqld - 1280 mysql mysqld - 1307 root sshd - 1318 root kdm - 1326 root X - 1327 nobody proftpd - 1330 root cron - 1334 root kdm - 1340 root apache - 1341 root getty - 1342 root getty - 1343 root getty - 1344 root getty - 1345 root getty - 1346 root getty - 1366 user startkde - 1403 user ssh-agen - 1446 user kdeinit - 1449 user kdeinit - 1451 user kdeinit - 1454 user kdeinit - 1460 user kdeinit - 1464 user artsd - 1466 user kdeinit - 1467 user kwrapper - 1469 user kdeinit - 1470 user kdeinit - 1475 user kdeinit - 1477 user kdeinit - 1480 user kdeinit - 1672 user kdeinit - 1688 user kdeinit - 1751 user firefox- - 1761 user firefox- - 1762 user firefox- - 1764 user gconfd-2 - 1766 user firefox- - 1814 user kdeinit - 1815 user bash - 8000 user sim - 26298 root bash - 31990 user kdeinit - 5509 user kdeinit - 7470 root man - 7475 root sh - 7477 root tbl - 7478 root nroff - 7480 root pager - 7483 root groff - 7484 root troff - 7485 root grotty - 7486 user bash - 8776 www-data apache - 9354 www-data apache - 9479 www-data apache - 9619 www-data apache - 9878 user bash - 10032 www-data apache - 10101 www-data apache - 10369 www-data apache - 10525 user ssh - 10704 user bash - 10748 user bash - 10776 user ps - Да поясня понеже са разместени тука. В стълба TMOUT има само тиренца. Нещо синтаксиса сигурно бъркам. Титла: Затваряне на всички прозорци Публикувано от: ivanatora в Apr 21, 2005, 21:30 Датата можеш да я вземеш от ps -Af в колоната STIME.
Титла: Затваряне на всички прозорци Публикувано от: XaugyTuH в Apr 22, 2005, 01:37 Опа, ама и аз нещо не съм в час.
![]() ![]() ![]() Титла: Затваряне на всички прозорци Публикувано от: kostadinz в Apr 22, 2005, 08:41 с пренасочване ps ... > file
по време на boot запомняш (снимаш) положението на работещите процеси. после когато трепеш процеси избягваш тези които си запомнил във файла. Само като идея не знам дали ще ти помогне. Титла: Затваряне на всички прозорци Публикувано от: rpetrov в Apr 22, 2005, 11:53 Спри процеса, за които командата е X.
Май трябва да се спре и звуков сървер (ако има стартиран). Титла: Затваряне на всички прозорци Публикувано от: ivak в Apr 22, 2005, 12:53 По-добре вместо 'ps' да ползваш информацията направо 'от източника' - /proc файловата система. За всеки стартиран процес там има отделна поддиректория с неговия номер, а вътре в нея има едно текстово файлче, наречено 'stat', от което ps черпи информация. n-тото поле в това файлче показва времето на стартиране на процеса в unix формат (бр. секунди от 1970 год. насам). Оттук насетне можеш да ползваш или идеята на kostadinz и да 'снимаш' процесите, след като е завършило зареждането на графичната среда, или пък да си харесаш някой реперен процес, за който се предполага, че е последният зареден (знам ли кой там, може би window manager-a... не ползвам kde) и да 'убиеш' всички процеси, които са по-млади от него.
Титла: Затваряне на всички прозорци Публикувано от: XaugyTuH в Apr 24, 2005, 03:40 ivak, благодаря много, това е безценна информация. Започвам да работя по варианта с процеса, който се е стартирал последен при зареждането на системата. Само се чудя дали е възможна следната издънка: Системен процес да се рестартира и времето му на стартиране да се промени и да е по-късно от зададения процес и в последствие да го килна и да омажа всичко. Някакви идеи?
Титла: Затваряне на всички прозорци Публикувано от: XaugyTuH в Apr 25, 2005, 00:50 Ако някой се чуди, да обясня все пак с каква цел ми трябва този скрипт.
Написах програмка, която служи за управление на компютрите в компютърна зала, която си има всички основни функционалности, но не затваря прозорците, които е отворил клиента при спиране на времето му. Съответно на следващият клиент при стартиране на неговото време му се появяват прозорците отворени от предишния клиент и не си е направил труда да затвори. Титла: Затваряне на всички прозорци Публикувано от: ohubohu в Apr 25, 2005, 09:20 Извинявай за тъпия въпрос, но защо не убиваш работещия юзер и да го логваш пак, вместо цялата тази гимнастика с процесите му?
На мен ми изглежда по-лесно и по-просто - като "ЦЕЛУВКА" ![]() Титла: Затваряне на всички прозорци Публикувано от: CTEHATA в Apr 25, 2005, 11:11
най-чистото решение би било да използваш информацията за родителски процеси, така че да убиеш само тези, които са стартирани от мениджъра на прозорци. Само трябва да се погрижиш тези процеси, които са необходими за работата на мениджъра ти, да ги изключиш от списъка за убийства. Естественно решението с рестартирането на Х е даже по-чисто, но ако едно хлапе чака да играе веднага след предното ще е досадно да трябва да мине рестарта. За да видиш дървото на процесите и да се ориентираш, използай pstree |