Как прервать операцию в консоли?

SLAX, Deep Style, ZenWalk

Модератор: Модераторы разделов

Ответить
монах Тук
Сообщения: 78
ОС: XP 32 SP3

Как прервать операцию в консоли?

Сообщение монах Тук »

Вот эту, например:

Код: Выделить всё

 while : ; do date; sleep 5; done

Ctrl+Z или Ctrl+C ничего не даёт. Печатается Z или C и всё на этом, продолжается вывод даты. Спасибо, кто откликнется.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20742
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как прервать операцию в консоли?

Сообщение Bizdelnick »

Ctrl+C должно работать.
Что за шелл? ls -l "$SHELL"
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
монах Тук
Сообщения: 78
ОС: XP 32 SP3

Re: Как прервать операцию в консоли?

Сообщение монах Тук »

Bizdelnick писал(а):
18.02.2016 00:03
Ctrl+C должно работать.
Что за шелл? ls -l "$SHELL"

Код: Выделить всё

ls -l "$SHELL"
-rwxr-xr-x 1 root root 921460 авг 16  2013 /bin/bash*

Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Как прервать операцию в консоли?

Сообщение serzh-z »

Подозреваю, что автор пользуется удалённым эмулятором терминала типа PuTTY, и обработка сигналов ^C там немного отличается от подобной обработки на локальной машине.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Как прервать операцию в консоли?

Сообщение SLEDopit »

Bizdelnick писал(а):
18.02.2016 00:03
Что за шелл? ls -l "$SHELL"
$SHELL должен содержать информацию о предпочтительном логин шелле (тому, что в /etc/passwd прописан).
По стечению обстоятельств, чаще всего оно совпадает с текущим шеллом сессии, но не стоит на это полагаться.

Код: Выделить всё

SHELL
            This variable shall represent a pathname of the user's preferred command
            language interpreter. If this interpreter does not conform to the Shell
            Command Language in XCU Shell Command Language, utilities may behave
            differently from those described in POSIX.1-2008.
// http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20742
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как прервать операцию в консоли?

Сообщение Bizdelnick »

А какой версии баш? /bin/bash --version

serzh-z писал(а):
18.02.2016 00:26
Подозреваю, что автор пользуется удалённым эмулятором терминала типа PuTTY, и обработка сигналов ^C там немного отличается от подобной обработки на локальной машине.

А что там может отличаться? Он или передаёт сочетание клавиш шеллу, или нет.

монах Тук
Я правильно понимаю, что Ctrl+C прерывает sleep, но не цикл? То есть в Вашем примере при нажатии сразу же печатается дата?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
bormant
Сообщения: 1354

Re: Как прервать операцию в консоли?

Сообщение bormant »

Всегда можно с другой консоли получить список процессов (ps ax), убить желаемый (kill id).
Вариант того же -- htop, выбрать, убить.
Спасибо сказали:
Аватара пользователя
yars
Сообщения: 1144
Статус: Slacker!
ОС: Slackware64-current

Re: Как прервать операцию в консоли?

Сообщение yars »

killall -s KILL $PPID
Slackware64-current/Xfce 4.12/Acer TravelMate 5760
-------------
Registered Linux User #557010
Спасибо сказали:
Аватара пользователя
Olej
Сообщения: 659
ОС: Fedora, Mint, Debian, QNX
Контактная информация:

Re: Как прервать операцию в консоли?

Сообщение Olej »

yars писал(а):
18.02.2016 07:01
killall -s KILL $PPID

killall посылает сигна не по PID, а по имени процесса.
Но указанное действие можно сделать с kill.


монах Тук писал(а):
17.02.2016 23:59
Вот эту, например:

Код: Выделить всё

 while : ; do date; sleep 5; done

Ctrl+Z или Ctrl+C ничего не даёт. Печатается Z или C и всё на этом, продолжается вывод даты. Спасибо, кто откликнется.

Все эти ваши хоткеи Ctrl+Z и Ctrl+C - это посылка сигнала процессу, реакция на которые может быть заблокирована, или которые будут прерывать блокированные состояния (sleep).
Посылайте сигнал -9, который невозможно блокировать:

Код: Выделить всё

$ sudo kill -9 <ваш_PID>

Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Как прервать операцию в консоли?

Сообщение SLEDopit »

монах Тук
скорее всего ваша проблема в том, что ctrl+c отлавливает sleep, а не сам bash.
попробуйте так:

Код: Выделить всё

while sleep 5 ; do date ; done

Ну или можно обернуть всё это в скрипт..
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
монах Тук
Сообщения: 78
ОС: XP 32 SP3

Re: Как прервать операцию в консоли?

Сообщение монах Тук »

Прежде, чем я приступлю к работе (я сейчас с винды пишу), внесу уточнение, важно оно или нет не знаю, но меня не спрашивали, а сам я сразу и точно не могу оценить степень важности, ибо я ноль полный. Быть может, оно прольёт свет на проблему.

Ctrl+Z и Ctrl+C не печатают ^Z или ^C, а печатают просто Z или C
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20742
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как прервать операцию в консоли?

Сообщение Bizdelnick »

Это в графическом эмуляторе терминала? А в виртуальной консоли?
Не связано ли это с Вашими экспериментами? Как сделать эффект от опциональных клавиш по своему усмотрению? (для начала хотя бы включение и отключение Caps Lock)
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Как прервать операцию в консоли?

Сообщение NickLion »

монах Тук
Это не VitualBox? Там правый Ctrl особое значение имеет.
Переключение языка не на Ctrl висит?
Если написать просто cat и нажать Ctrl+C прервётся? Если просто C напечатает — нажмите Enter, выведет снова C?
Спасибо сказали:
монах Тук
Сообщения: 78
ОС: XP 32 SP3

Re: Как прервать операцию в консоли?

Сообщение монах Тук »

NickLion писал(а):
18.02.2016 17:11
Переключение языка не на Ctrl висит?
ну да, висит и пусть висит. Понимаете, это удобно для меня очень. Я годами так работал. Это из-за этого? Похоже, что из-за этого, я убрал переключение языков с Ctrl и Ctrl+C заработало нормально.

А можно как-нибудь по-другому достичь эффекта Ctrl+C? Сразу скажу, что убиение какого-либо процесса вряд ли приведёт к желаемому результату, ибо Ctrl+C не убивает, по-моему никакой процесс. По крайней мере я не заметил в htop чтобы что-то исчезало. Хотя конечно, наглядность там та ещё.

Я работаю в консоли, которая такой чёрный квадратик на панели. "Konsole Terminal", командная строка /bin/bash -l

Если чё- это самое начало Робачевского и Немнюгина
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20742
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как прервать операцию в консоли?

Сообщение Bizdelnick »

монах Тук писал(а):
18.02.2016 22:26
Это из-за этого?

Да. В иксах переключение раскладки реализовано по-дурацки, поэтому вешать его на клавиши-модификаторы нельзя: сочетания с их участием перестают работать.

монах Тук писал(а):
18.02.2016 22:26
Понимаете, это удобно для меня очень

Понимаем, но придётся переучиваться или страдать. Попробуйте переназначить на win/menu, всё равно ведь бесполезные клавиши.

монах Тук писал(а):
18.02.2016 22:26
Ctrl+C не убивает, по-моему никакой процесс

Конечно не убивает. Всего лишь отправляет SIGINT. Как правило, в результате процесс незамедлительно самоубивается.

монах Тук писал(а):
18.02.2016 22:26
я не заметил в htop чтобы что-то исчезало.

Сколько процессов Вы там видите, и сколько их всего запущено в системе?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
монах Тук
Сообщения: 78
ОС: XP 32 SP3

Re: Как прервать операцию в консоли?

Сообщение монах Тук »

Bizdelnick писал(а):
18.02.2016 22:50
Да. В иксах переключение раскладки реализовано по-дурацки, поэтому вешать его на клавиши-модификаторы нельзя: сочетания с их участием перестают работать.
мда... Так это же наше всё, как я понял. Есть какая-нибудь альтернатива иксам?

Я, кстати, давно это заметил- ни в одной программе нельзя изменить размер шрифта (Сtrl++). Ну. я не стал спрашивать, думал, я ещё мало знаю, почитаю Немнюгина. Почитал называется. Руки повырывать таким программистам.
Спасибо сказали:
yoshakar
Сообщения: 259
ОС: Debian Stretch

Re: Как прервать операцию в консоли?

Сообщение yoshakar »

монах Тук писал(а):
18.02.2016 22:53
Руки повырывать таким программистам.
Но с другой стороны это стимулирует перейти на вменяемые перключатели раскладок. (По моему субъективному мнению объективно лучшим нециклическим вариантом является CapsLock.)
Спасибо сказали:
Ответить