Автор Тема: Затваряне на всички прозорци  (Прочетена 2724 пъти)

XaugyTuH

  • Напреднали
  • *****
  • Публикации: 267
    • Профил
    • WWW
Идеята ми е да напиша скрипт, който убива всички процеси, които са стартирани след първоначалното зареждане на системата. Ясно, че ще е някаква врътка със ps, обаче нещо не мога да я измисля. Някой ако може - да помага. Благодаря предварително.
Активен

Когато говорите, трябва думите ви да бъдат по-добри от мълчанието!

Не правете от мухата слон. Разходите са прекалено големи.

Drakula

  • Напреднали
  • *****
  • Публикации: 319
  • Distribution: Gentoo
  • Window Manager: KDE 4
    • Профил
Затваряне на всички прозорци
« Отговор #1 -: Apr 21, 2005, 16:12 »
Само една идейка, която ми хрумна веднага след първи прочит:
Всеки следващ стартиран процес би трябвало да е с pid по-голям от всеки предходно стартиран процес.
Ако това е така (в което не съм съвсем сигурен) мисля че проблемът не е толкова труден
Активен

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Затваряне на всички прозорци
« Отговор #2 -: Apr 21, 2005, 16:22 »
Цитат (Drakula @ Април 21 2005,17:12)
Само една идейка, която ми хрумна веднага след първи прочит:
Всеки следващ стартиран процес би трябвало да е с pid по-голям от всеки предходно стартиран процес.
Ако това е така (в което не съм съвсем сигурен) мисля че проблемът не е толкова труден

А като стигне 65535 (или беше 32767) какво става? Номерата на процесите се рециклират, така че идеята може да се приложи, но можеш и да си омажеш нещата :-)
Активен

0x2B|~0x2B

spawnman

  • Напреднали
  • *****
  • Публикации: 455
    • Профил
Затваряне на всички прозорци
« Отговор #3 -: Apr 21, 2005, 16:38 »
Болшинството от системните процеси (ако не и всички), би трябвало да са стартирани от супер потребителя, така че можеш да помислиш върху изхода на ps aux | grep root и да прецениш до колко те устройва или не '<img'>
Активен

Mandriva Cooker
BlackBox

FV80503200 SL27J, 82437FX TSC, 128 (4x32) MB 72pin EDO, AHA-2940UW, ST34572W, M2513A, CDU521, CTL0024, 3C509b-TPC, 215R3PUA22, FP767-12

XaugyTuH

  • Напреднали
  • *****
  • Публикации: 267
    • Профил
    • WWW
Затваряне на всички прозорци
« Отговор #4 -: Apr 21, 2005, 18:36 »
ps aux | grep root предценявам, че не ме устройва, защото е ясно, че трябва да се убият процесите пуснати само от обикновеният потребител, който се е логнал в момента. Но... не всички. Като например КДЕ. Все пак целта е да се затворят прозорците, които са отворени след първоначалното зареждане на графичната среда.
Идеята с килването на процеси по-големи от определен номер също мисля, че ще се издъни, защото до колкото знам някои от системните процеси сами се рестартират понякога и макара да изглежда, че работят непрекъснато, на практика си сменят pid-овете.
Все пак идеите до тук бяха много полезни, за да видим как няма да стане  '<img'> . Надявам се на още такива.
Активен

Когато говорите, трябва думите ви да бъдат по-добри от мълчанието!

Не правете от мухата слон. Разходите са прекалено големи.

  • Гост
Затваряне на всички прозорци
« Отговор #5 -: Apr 21, 2005, 18:51 »
гледаш uptime-а, заедно с дата/часа от ps output-а. това трябва да ти даде идея кое е пуснато по-късно
Активен

XaugyTuH

  • Напреднали
  • *****
  • Публикации: 267
    • Профил
    • WWW
Затваряне на всички прозорци
« Отговор #6 -: 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

  • Напреднали
  • *****
  • Публикации: 658
  • Distribution: Ubuntu 10.04
  • Window Manager: Fluxbox
    • Профил
    • WWW
Затваряне на всички прозорци
« Отговор #7 -: Apr 21, 2005, 21:30 »
Датата можеш да я вземеш от ps -Af в колоната STIME.
Активен

XaugyTuH

  • Напреднали
  • *****
  • Публикации: 267
    • Профил
    • WWW
Затваряне на всички прозорци
« Отговор #8 -: Apr 22, 2005, 01:37 »
Опа, ама и аз нещо не съм в час.  '<img'>  Човека ми говори за uptime, пък аз си дрънкам за timeout. '<img'>  Значи идеята е чудесна, само че не знам как да взема датата и часа. В смисъл, че ps -Af ми дава само датата ако процесът е стартирал в предишен ден и само часът ако е стартирал в текущият ден. Сори, обаче от всичкото ми четене на ман страници и ровене в гугъл не можах да го открия това. Надявам се на още малко помощ.  '<img'>
Активен

Когато говорите, трябва думите ви да бъдат по-добри от мълчанието!

Не правете от мухата слон. Разходите са прекалено големи.

kostadinz

  • Напреднали
  • *****
  • Публикации: 197
    • Профил
Затваряне на всички прозорци
« Отговор #9 -: Apr 22, 2005, 08:41 »
с пренасочване ps ... > file
по време на boot запомняш (снимаш) положението на работещите процеси.
после когато трепеш процеси избягваш тези които си запомнил във файла.
Само като идея не знам дали ще ти помогне.
Активен

rpetrov

  • Напреднали
  • *****
  • Публикации: 571
    • Профил
    • WWW
Затваряне на всички прозорци
« Отговор #10 -: Apr 22, 2005, 11:53 »
Спри процеса, за които командата е X.
Май трябва да се спре и звуков сървер (ако има стартиран).
Активен

ivak

  • Напреднали
  • *****
  • Публикации: 156
    • Профил
Затваряне на всички прозорци
« Отговор #11 -: Apr 22, 2005, 12:53 »
По-добре вместо 'ps' да ползваш информацията направо 'от източника' - /proc файловата система. За всеки стартиран процес там има отделна поддиректория с неговия номер, а вътре в нея има едно текстово файлче, наречено 'stat', от което ps черпи информация. n-тото поле в това файлче показва времето на стартиране на процеса в unix формат (бр. секунди от 1970 год. насам). Оттук насетне можеш да ползваш или идеята на kostadinz и да 'снимаш' процесите, след като е завършило зареждането на графичната среда, или пък да си харесаш някой реперен процес, за който се предполага, че е последният зареден (знам ли кой там, може би window manager-a... не ползвам kde) и да 'убиеш' всички процеси, които са по-млади от него.
Активен

Cлoжнитe пpoблeми имaт пpocти и лecни зa paзбиpaнe гpeшни oтгoвopи.

XaugyTuH

  • Напреднали
  • *****
  • Публикации: 267
    • Профил
    • WWW
Затваряне на всички прозорци
« Отговор #12 -: Apr 24, 2005, 03:40 »
ivak, благодаря много, това е безценна информация. Започвам да работя по варианта с процеса, който се е стартирал последен при зареждането на системата. Само се чудя дали е възможна следната издънка: Системен  процес да се рестартира и времето му на стартиране да се промени и да е  по-късно от зададения процес и в последствие да го килна и да омажа всичко. Някакви идеи?
Активен

Когато говорите, трябва думите ви да бъдат по-добри от мълчанието!

Не правете от мухата слон. Разходите са прекалено големи.

XaugyTuH

  • Напреднали
  • *****
  • Публикации: 267
    • Профил
    • WWW
Затваряне на всички прозорци
« Отговор #13 -: Apr 25, 2005, 00:50 »
Ако някой се чуди, да обясня все пак с каква цел ми трябва този скрипт.
Написах програмка, която служи за управление на компютрите в компютърна зала, която си има всички основни функционалности, но не затваря прозорците, които е отворил клиента при спиране на времето му. Съответно на следващият клиент при стартиране на неговото време му се появяват прозорците отворени от предишния клиент и не си е направил труда да затвори.
Активен

Когато говорите, трябва думите ви да бъдат по-добри от мълчанието!

Не правете от мухата слон. Разходите са прекалено големи.

ohubohu

  • Напреднали
  • *****
  • Публикации: 355
    • Профил
Затваряне на всички прозорци
« Отговор #14 -: Apr 25, 2005, 09:20 »
Извинявай за тъпия въпрос, но защо не убиваш работещия юзер и да го логваш пак, вместо цялата тази гимнастика с процесите му?

На мен ми изглежда по-лесно и по-просто - като "ЦЕЛУВКА" '<img'>
Активен

             KISS
(Keep It Simple, Stupid)