То, что вы сделали, можно назвать вилкой. Бомба с вилкой - это сценарий оболочки или одна команда оболочки, которая вызывает себя рекурсивно и, таким образом, заполняет все системные ресурсы. Это ошибка DoS.
Каждый раз, когда выполняется ./kill-me-please.sh, создается новый процесс с использованием некоторых циклов памяти и тактовых импульсов. Ваша программа способна создавать бесконечно много вилок, но из-за того, что системные ресурсы конечны, в какой-то момент времени у вас закончится нехватка ресурсов. Существует много видов вилочных бомб, которые используют эту возможность. Другой известный пример:
$ :(){ :|:& };:
Здесь : - имя функции оболочки. В функции : рекурсивно вызывается два раза в подоболочке. Это будет иметь такое же влияние, как и ваш скрипт.
Потери этих вилочных бомб сложны, так как все ресурсы могут быть использованы вилкой, пока вы не найдете и не примените необходимую процедуру. Некоторые способы восстановления объясняются и обсуждаются в fork bomb .
Чтобы предотвратить это, в Linux и, возможно, в других Unices, можно использовать утилиту DoS для ограничьте количество процессов, которые может создать пользователь. ulimit -Hu 50 ограничит пользователя до 50 процессов (так что пользователь не сможет его изменить). Также во многих системах есть файлы конфигурации, которые можно использовать для установки таких ограничений.
Скорее всего, ваша система OS X уже имеет установленный предел процесса. Я могу думать о других способах предотвратить это, но я не могу сказать, что ни мои идеи не являются допустимыми решениями, ни реализованы какой-либо операционной системой, поэтому я буду держать их в себе. Возможно, многие люди, читающие эту тему, все равно подумают о тех же самых возможностях.
Ctrl + C уже назначена другой команде, которая прерывает программу, запущенную в терминале. Например, ping. www.google.com начнет пинговать Google, пока вы не скажете, чтобы он остановился. Как вы это делаете, нажав Ctrl + C
Таким образом, они не могли просто изменить назначение этой комбинации.
Выделите текст, который вы хотите скопировать, нажмите Ctrl + Shift + C и копируется в буфер обмена. Ctrl + Ctrl + V и вы вставляете его.
Дайте мне знать, если это не сработает ...
Помимо того, что сказал @Dan, есть еще один вариант для копирования текста в Linux, который я нахожу намного быстрее и проще в использовании, так как нет необходимости в swich от мыши (которую вы используете, чтобы сделать выбор ) на клавиатуру:
выбор текста с помощью мыши копирует его в буфер обмена, вставляя его в середину.Эта функция особенно полезна в терминале, например, при сборке команды из битов текста, которые уже находятся на экране.
Это работает во всех приложениях, вставить текст с веб-страницы на терминал и т. д.
Буфер обмена буфера, используемый для скопирования в середине клика, отличается от буфера обмена, который используется для Ctrl-C / Ctrl-V, что позволяет иметь два разных биты текста, скопированные в одно и то же время.
Как уже отмечалось, Ctrl + C обычно используется для прерывания программы. Но вместо того, чтобы использовать Ctrl + Shift + C для копирования, который я делаю гораздо чаще, чем прерывание процесса, я изменяю параметр, чтобы Ctrl + C копировал и Ctrl + Shift + C для прерывания. Вы можете сделать это в терминале GNOME, перейдя в «Редактировать» -> «Ярлыки клавиш ...» и сопоставьте действие «Копировать» с Ctrl + C и «Вставить» в Ctrl + V.
Чтобы сделать вырезание и вставку (Ctrl + V, Ctrl + C) работать в консоли или терминале, поместите следующий код в терминал, чтобы автоматически изменить привязки клавиш:
gconftool-2 -t str -s /apps/gnome-terminal/keybindings/copy "<Control>c"
gconftool-2 -t str -s /apps/gnome-terminal/keybindings/paste "<Control>v"
Извините за ответ на этот вопрос, похоже, что я потратил слишком много своей репутации на награду за возможность опубликовать комментарий.
Невозможно изменить поведение сочетаний клавиш в зависимости от того, есть ли выбор текста или нет, и я бы не переназначил CT-C терминала.
НО, вы можете легко привыкнуть к
Ctrl + Ins для копирования Shift + Ins для вставкиЭто работает практически везде (кроме Наутилуса, вздоха) и почти никогда не переписывается ни с чем!
Кто-то хотел, чтобы вы могли использовать:
> stty intr ^K # free Ctrl+C for copy use Ctrl+K instead
> stty lnext ^- # free Ctrl+V for paste use ^- instead
> stty -g
> stty -g > ~/.stty # store the settings in home directory
Добавить следующее в ~/.bashrc
case $- in
*i*)
stty `cat ~/.stty` # reload the stored stty settings
bind -u quoted-insert # unbind the quoted-insert function of bash - free Ctrl+V for paste
esac
И затем редактор gconf или somesuch, чтобы изменить привязки терминалов к CTRL + C для копирования и CTRL + V для вставки.
в Lxterminal (терминал по умолчанию в Lxde), вы можете полностью настроить ярлыки:
Я думаю, что вы не можете, потому что в терминале gnome Ctrl + C, Ctrl + X, Ctrl + V не работают. Для резки, копирования и вставки вы должны выделить текст, щелкнуть правой кнопкой мыши и выбрать действие, которое вы хотите сделать
Как уже было сказано, Ctrl-C не будет работать из-за использования прерываний, но я просто понял способ, который работал для меня. Моя цель состояла в том, чтобы иметь только два ключа, а не три, и предпочтительно то, к чему я привык, и не в слишком неудобном месте на клавиатуре. На клавиатуре, которую у меня есть на моем ящике Linux, есть клавиша «Windows», в том же ключе, что и клавиша Command на Mac. Поэтому я просто перешел в «Редактировать»> «Ярлыки клавиш», когда я изменил ярлыки, чтобы использовать этот ключ, он говорит Super + C и Super + V. Я иногда использую Mac тоже, так что это было легко привыкнуть.