LINUX.ORG.RU

Помогите разобраться со FreeBSD – root не может снять процесс ни по kill, ни по ctrl+C


0

0

Помогите разобраться со FreeBSD – root не может снять процесс ни по kill, ни по ctrl+C.

Система свежая, FreeBSD 7.0, на персоналке с одноядерным процессором. Единственное отличие от установки по умолчанию – терминалы стали русские (cons25r, но сообщения об ошибках английские), и есть установленные Demos Commander (deco) из дистрибутива deco38.tgz и Midnight Commander, но они даже в автозапуске не прописаны. Вот ссылка на deco38.tgz: http://rapidshare.de/files/48014947/DECO38.TGZ.html http://www.rapidshare.ru/1121771

Терминал 1. login: root password: (пустой) #deco Esc, esc. “Do you want to quit the Demos Commander ?” Yes No Exec shell Выбираю exec shell Видимо по умолчанию стоит шелл csh, а deco запускает sh. #ps [code] PID TT STAT TIME COMMAND 745 v0 Is 0:00.05 login [pam] (login) 753 v0 I 0:00.04 -csh (csh) 757 v0 S 0:00.03 sh -i 774 v0 R+ 0:00.00 ps 746 v1 Is+ 0:00.01 /usr/libexec/getty Pc ttyv1 747 v2 Is+ 0:00.01 /usr/libexec/getty Pc ttyv2 748 v3 Is+ 0:00.01 /usr/libexec/getty Pc ttyv3 749 v4 Is+ 0:00.01 /usr/libexec/getty Pc ttyv4 750 v5 Is+ 0:00.01 /usr/libexec/getty Pc ttyv5 751 v6 Is+ 0:00.01 /usr/libexec/getty Pc ttyv6 752 v7 Is+ 0:00.01 /usr/libexec/getty Pc ttyv7 [/code] #pwd /root #mkfifo fif Далее пример из книжки Робачевского «Операционная система Unix» (2-е издание) с. 25. #while : ; do date >fif; sleep 5; done& #ps [code] PID TT STAT TIME COMMAND 745 v0 Is 0:00.05 login [pam] (login) 753 v0 I 0:00.04 -csh (csh) 757 v0 S 0:00.03 sh -i 779 v0 I 0:00.00 sh -i 780 v0 I 0:00.00 sh -i 782 v0 R+ 0:00.00 ps 746 v1 Is+ 0:00.01 /usr/libexec/getty Pc ttyv1 747 v2 Is+ 0:00.01 /usr/libexec/getty Pc ttyv2 748 v3 Is+ 0:00.01 /usr/libexec/getty Pc ttyv3 749 v4 Is+ 0:00.01 /usr/libexec/getty Pc ttyv4 750 v5 Is+ 0:00.01 /usr/libexec/getty Pc ttyv5 751 v6 Is+ 0:00.01 /usr/libexec/getty Pc ttyv6 752 v7 Is+ 0:00.01 /usr/libexec/getty Pc ttyv7 [/code] Это уже странно. Когда тот же пример запускался, не выходя из deco (просто у него в командной строке набирал), 2 создаваемых процесса назывались не sh -i, а по той командной строке (while и пр.), что я набирал. В csh же, что по умолчанию во FreeBSD, вообще при интерпретации строки вылезает ошибка и пример Робачевского в этом шелле попросту не работает. Продолжаем пример Робачевского #while : ; do awk ‘{print $4}’ fif; done Он начинает с интервалом в 5 секунд выводить текущее время. У Робачевского – «для остановки используйте ^C». Так вот, оно не работает. Появляется ^C на экране, а цифры все идут. Причем, когда все запускалось из-под deco, ^C работало.

Терминал 2. login: root password: (пустой) #ps [code] PID TT STAT TIME COMMAND 745 v0 Is 0:00.05 login [pam] (login) 753 v0 I 0:00.04 -csh (csh) 757 v0 S 0:00.07 sh -i 779 v0 S 0:00.05 sh -i 948 v0 S 0:00.00 sleep 5 949 v0 S+ 0:00.00 awk {print $4} fif 746 v1 Is 0:00.04 login [pam] (login) 923 v1 S 0:00.05 -csh (csh) 946 v1 R+ 0:00.00 ps 747 v2 Is+ 0:00.01 /usr/libexec/getty Pc ttyv2 748 v3 Is+ 0:00.01 /usr/libexec/getty Pc ttyv3 749 v4 Is+ 0:00.01 /usr/libexec/getty Pc ttyv4 750 v5 Is+ 0:00.01 /usr/libexec/getty Pc ttyv5 751 v6 Is+ 0:00.01 /usr/libexec/getty Pc ttyv6 752 v7 Is+ 0:00.01 /usr/libexec/getty Pc ttyv7 [/code] У процессов sleep, awk номера все время меняются (что неудивительно). Пытаемся снять тот процесс, у которого номер не меняется. #kill 779 Нет ответного сообщения. Даем ps и видим, что... процесс жив! #ps [code] PID TT STAT TIME COMMAND 745 v0 Is 0:00.05 login [pam] (login) 753 v0 I 0:00.04 -csh (csh) 757 v0 S 0:00.08 sh -i 779 v0 S 0:00.07 sh -i 1013 v0 S 0:00.00 sleep 5 1014 v0 S+ 0:00.00 awk {print $4} fif 746 v1 Is 0:00.04 login [pam] (login) 923 v1 S 0:00.06 -csh (csh) 1015 v1 R+ 0:00.00 ps 747 v2 Is+ 0:00.01 /usr/libexec/getty Pc ttyv2 748 v3 Is+ 0:00.01 /usr/libexec/getty Pc ttyv3 749 v4 Is+ 0:00.01 /usr/libexec/getty Pc ttyv4 750 v5 Is+ 0:00.01 /usr/libexec/getty Pc ttyv5 751 v6 Is+ 0:00.01 /usr/libexec/getty Pc ttyv6 752 v7 Is+ 0:00.01 /usr/libexec/getty Pc ttyv7 [/code] Такой же эффект на команду #kill 757 Помогает только #shutdown -r now

Если вместо запуска deco набрать просто #sh -i, таких проблем не возникает – процесс, осуществляющий цикл (и его потомки), снимается по первому же ^C.

Что не так?

Re: Помогите разобраться со FreeBSD – root не может снять процесс ни по kill, ни по ctrl+C

М-да, вот тот же вопрос, но в более читабельном виде:

http://www.gamedev.ru/flame/forum/?id=121888

Vedmak ()

Re: Помогите разобраться со FreeBSD – root не может снять процесс ни по kill, ни по ctrl+C

там уже написали: kill -9

lester ★★★★ ()

Re: Помогите разобраться со FreeBSD – root не может снять процесс ни по kill, ни по ctrl+C

Ночь не читающих правила на ЛОРе? О_о

Andru ★★★★ ()

Re: Помогите разобраться со FreeBSD – root не может снять процесс ни по kill, ни по ctrl+C

ты взорвал мой моск

//я приду к тебе во сне и заставлю дебажить мои некоментированые и неформатированые быдлоподелки

z01 ()

Re: Помогите разобраться со FreeBSD – root не может снять процесс ни по kill, ни по ctrl+C

не силен я в никсах, но если что-то не убивается просто, то я убиваю с ключом kill:

kill -KILL pid

yet_another_lor_account ()

Re: Помогите разобраться со FreeBSD – root не может снять процесс ни по kill, ни по ctrl+C

1. когда пишешь сообщения внизу есть такой combobox где надо выбрать "User line breaks". Этот ритуал посвящения новичков на лор. Те, которые зают что такое TeX - принимаются как деды без посвящения.

2. на лоре не принято ходить по ссылкам, следовательно ссылки давать не имеет смысла.

3. привильно наприсали kill -9 <номер процесса>.

4. снимать процессы игнорирующие ctrl-c можно ещё при помощи Ctrl-Z, с последующим умерщвлением по kill.

5. Существуют неубиваемые процессы, но они помечены буквой D в выводе ps, твой не похож.

6. может не быть првв на умервщление. В linux kill тогда ругается вроде.

7. Книжка классная :) Я так впечатлился от её прочтения в своё время что уже 10 лет Linuxом занимаюсь.

gena2x ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.