Кіріспе

Бірнеше операциялық жүйеде процесті тоқтату командасы

2016 жылғы британдық ғылыми-фантастикалық триллер фильмі

Компьютерде kill – бірнеше танымал операциялық жүйеде іске қосылған процестерге сигнал жіберу үшін қолданылатын команда.

Unix және Unix-қа ұқсас

Unix және Unix-қа ұқсас операциялық жүйелерде kill – процеске сигнал жіберу үшін қолданылатын команда. Дәстүрлі түрде, жіберілетін хабарлама – процестің аяқталуын сұрайтын тоқтату сигналы. Бірақ «өлтіру» термині шартты, себебі жіберілген сигнал процесті тоқтатумен байланысты болмауы мүмкін. Kill командасы – жүйелік kill шақыруының орауышы, ол жүйедегі процестерге немесе процестер тобына олардың сандық процестер идентификаторы (PID) немесе процестер тобының идентификаторы (PGID) арқылы сигналдарды жібереді. Kill командасы POSIX стандартында анықталған дербес құрал ретінде әрқашан ұсынылады. Дегенмен, көптеген қабықшаларда (shell) одан сәл өзгеше kill командалары бар. Жіберуге болатын көптеген сигналдар бар (толық тізім үшін signal қараңыз), бірақ пайдаланушыларды ең көп қызықтыратындары SIGTERM («тоқтату») және SIGKILL («өлтіру»). Дәстүрлі сигнал SIGTERM болып табылады. Бұл сигналды өңдейтін бағдарламалар, тоқтату алдында конфигурациялық ақпаратты файлға сақтау сияқты, пайдалы тазалау операцияларын орындай алады. Алайда, көптеген бағдарламалар осы сигналға арналған арнайы өңдеушіні іске қоспайды, сондықтан әдепкі сигнал өңдеушісі шақырылады. Кейде тіпті арнайы өңдеушісі бар процесс те сигналды дұрыс өңдеуге кедергі келтіретін жағдайға түсуі мүмкін. SIGKILL және SIGSTOP («тоқтату») сигналдарын қоспағанда, барлық сигналдарды процесс «ұстап ала алады», яғни бағдарлама осы сигналдарды алғанда арнайы функция шақырылуы мүмкін. SIGKILL және SIGSTOP екі ерекшелік жүйе ядросымен ғана көрінеді, процестердің орындалуын басқарудың сенімді жолын ұсынады. SIGKILL процесті тоқтатады, ал SIGSTOP SIGCONT («жалғастыру») сигналы алынғанға дейін оны тоқтатады. Unix рұқсатсыз пайдаланушылардың басқа процестерді тоқтатуына жол бермеу үшін қауіпсіздік механизмдерін қамтамасыз етеді. Бір процесс екінші процеске сигнал жіберу үшін, сигнал жіберуші процестің иесі қабылдаушы процестің иесімен бірдей болуы керек немесе супер пайдаланушы болуы тиіс. Барлық қолжетімді сигналдардың әр түрлі атаулары бар және олар белгілі бір сандарға сәйкес келеді. Сандар мен сигналдар арасындағы нақты сәйкестік Unix жүйесінің әртүрлі нұсқаларында өзгеше болуы мүмкін. SIGTERM көбінесе 15 санымен, ал SIGKILL көбінесе 9 санымен нөмірленеді.

Қатысушы бағдарламалар

Unix-тің кейбір нұсқаларында, мысалы Solaris-те, бұл құрал жүйе өшіріліп жатқанда автоматты түрде іске қосылады. Ол жоғарыдағы kill командасына ұқсас, бірақ жеке процеске сигнал жіберудің орнына, сигнал жүйедегі барлық процестерге жіберіледі. Дегенмен, IRIX, Linux және FreeBSD сияқты басқаларында, өлтіруге тиіс процестің (немесе процестердің) атын көрсететін аргумент беріледі. Мысалы, xmms арқылы іске қосылған XMMS музыка ойнатқышының бір данасын жою үшін пайдаланушы killall xmms командасын орындайды. Бұл xmms деп аталған барлық процестерді тоқтатады және Solaris сияқты жүйелерде kill `pidof xmms` командасына тең келеді. pkill процестерді аты мен басқа да атрибуттары бойынша белгілейді. Ол алғаш рет Solaris 7-де пайда болды, кейін Linux, NetBSD және OpenBSD үшін қайта іске асырылды. pkill процестерді аты бойынша тоқтатуды әлдеқайда ыңғайлы етеді: мысалы, pkill және pgrep қолданбастан тыс firefox деп аталған процесті тоқтату үшін kill `ps no headers C firefox o pid` деп теру керек, ал pkill-мен жай ғана pkill firefox деп теру жеткілікті. xkill егер ешқандай параметрлерсіз шақырылса, тышқан курсоры жебеден "x" белгісіне өзгереді және пайдаланушы X серверінің терезенің иесіне қосылысын жабу үшін терезені басу арқылы мәжбүрлей алады. Бұл процесс X серверімен байланысы үзілгенін анықтағанда тоқтатылуына себеп болады.

Microsoft Windows және ReactOS

Microsoft-тың Windows PowerShell командалық жол интерпретаторында kill – Stop Process cmdlet командасының алдын ала анықталған псевдонимдерінің бірі. Microsoft Windows XP, Vista және 7 жүйелері процестерді аяқтау үшін taskkill командасын қамтиды. Бұл команданың қалыпты синтаксисі: taskkill /im "IMAGENAME". Windows 98 үшін қолжетімді Microsoft Windows Resource Kits-тің бірнеше нұсқасында "қолдаусыз" kill нұсқасы да бар болған. GNU-ның kill нұсқалары Cygwin арқылы жүзеге асырылды және Microsoft Windows Services for UNIX қамтамасыз ететін Unix ортасының ішкі жүйесінде жұмыс істейді (Microsoft 1999 жылдың 17 қыркүйегінде Softway Systems және олардың Interix өнімін сатып алып, Windows Services for Unix құқығын толығымен иеленді). ReactOS-тың іске асырылуы Windows нұсқасына негізделген. Оны Эндрю Риди, Эндрю Нгуен және Хе Ян жасады. Ол LGPLv2.1 немесе одан кейінгі нұсқасымен лицензияланған.

Microsoft бірлігі

Singularity қабығы, Microsoft Research-тің микроядролық операциялық жүйесі Singularity-нің стандартты қабығы, фондық процестерді тоқтату үшін «өшіру» командасын қамтиды.

Белл зертханасының 9-жоспары

Белл Лабораториясының 9-жоспары бойынша, kill бағдарламасы процестерді тоқтатуды тікелей орындамайды, сондай-ақ процестердің идентификаторларын қабылдамайды. Оның орнына, ол процестердің нақты аттарын қабылдап, 9-жоспарында қолданылатын rc қабығына процестерді тоқтату командаларын шығарады. Осыған ұқсас slay командасы да бар, ол осылай жұмыс істейді, бірақ дәл осы тәсілмен тоқтатылудан бас тартатын процестер үшін қолданылады.