Как остановить SRM Linux?

516
User9532

Я использую SRM, чтобы удалить один файл. Уже 12 часов SRM работает для удаления файла 7 ГБ, и он имеет только 3 звезды ***

Есть ли способ остановить это или сделать паузу, чтобы я сделал это в другой день.

0
`srm` делает 38 проходов по умолчанию, поэтому он удалит 228 ГБ для удаления файла. Он уже перезаписал файл уже несколько раз. Вы можете просто контролировать его и делать менее безопасный проход позже - при накоплении это может означать одно и то же. Paul 6 лет назад 0
Благодарю. Как я могу проверить скорость перезаписи и приблизительное время? User9532 6 лет назад 0
Вы можете приостановить любую программу, отправив ей сигнал STOP (это не означает завершение), и возобновить с помощью сигнала CONT. Вы можете сделать это с помощью параметров `kill` или из Task Monitor. Приостановленное состояние не будет возобновлено после перезагрузки, но сон или спящий режим в порядке. AFH 6 лет назад 1

2 ответа на вопрос

0
kostix

Ускоренный курс на уничтожение программ командной строки / текстового режима

Чтобы уточнить комментарий @ AFH, если «SRM» является консольной программой (интерфейс командной строки), и вы запустили ее из терминала, просто нажмите Ctrl-z, так как это заставляет ваш терминал отправлять процесс переднего плана, он управляет этим SIGSTOPсигналом и отправляет его на задний план. Затем вы можете «вернуть его», выполнив команду fgоболочки - это часть так называемого «управления заданиями», реализуемого интерактивными оболочками, и означает вывод фонового процесса на передний план (отсюда и «fg»), который включает в себя отправку процесса SIGCONTсигнал среди прочего.

Конечно, просто остановить процесс, остановить его. В системах Unix-y, включая ОС на базе Linux, это делается путем отправки процессу одного из специальных сигналов - обычно SIGTERMили SIGINT. Попадание Ctrl-cв терминал, который запускает процесс, заставляет процесс послать SIGINTсигнал. killПрограмма может быть использована для отправки произвольных произвольных сигналов процессов.

Проблема с использованием killзаключается в том, что для большинства его применений требуется, чтобы пользователь знал так называемый «PID» процесса, на который нужно отправить сигнал. ПИД является Р rocess ID entifier-целое число ≥ 1 уникальным во всех процессах, в данный момент под управлением операционной системы.

Управление заданиями оболочки облегчает задачу, поскольку у нее есть определенная мнемоника для ссылки на процессы, которыми она управляет: если вы ударили по фону текущего активного процесса нажатием Ctrl-z, вы можете использовать jobsкоманду, чтобы просмотреть список процессов, управляемых этой оболочкой. Например, я только что приостановил экземпляр mutt и запустил jobsпосле этого; вот что я вижу:

~$ jobs [1]+ Stopped mutt 

Обратите внимание на этот [1]+бит. Идентификатор 1задания, назначенный этому процессу оболочкой. Это +«дескриптор» для ссылки на последний фоновый процесс.

Таким образом, теперь вы можете использовать одну %1или %+с killкомандой для ссылки на этот процесс, как в

$ kill %1 

или же

$ kill %+ 

... и все они отправят SIGTERMв этот единый фоновый процесс.

Вот как вы можете убить неправильно работающую консольную программу.

Подробнее о синглах

Обратите внимание, что эти SIGINTи SIGTERMсигналы могут быть «обработаны» процессом, который получил один из них. Это позволяет процессу выполнить определенные действия по очистке перед выходом.

Но иногда процесс может «зависнуть» - скажем, выполняя бесконечный цикл на процессоре из-за программной ошибки или застревая при попытке чтения / записи из / в файл на каком-то «мертвом» ресурсе, таком как отключенный сетевой ресурс. В этих случаях доставка SIGINTили SIGTERM, как правило, не удастся «раскрутить» процесс.

Чтобы справиться с такими случаями, существует специальный сигнал, SIGQUITкоторому назначен известный номер «9». Отправка процесса этим сигналом просто заставляет операционную систему принудительно обнулять процесс, не имея возможности вмешаться. Вот почему вы, скорее всего, видели это kill -9 $pidзаклинание в некоторых документах.

Другие опции

Есть и другие варианты, конечно.

Во-первых, существуют «удобные для пользователя» программы, такие как, htopкоторые предоставляют вам доступный для поиска список запущенных процессов и позволяют вам отправлять любые из них по своему выбору.

Графические среды рабочего стола, такие как GNOME, XFCE, KDE и другие, обычно предоставляют приложение с графическим интерфейсом для того же.

Во-вторых, существуют более «хакерские» способы справиться с неправильным поведением процессов в тех случаях, когда эти «менеджеры задач» недоступны или по какой-то причине не соответствуют требованиям. Вот некоторые из них в произвольном порядке:

  • При запуске xkillутилита (в Debian и его производной она находится в x11-utilsпакете) показывает вам диагональный крестообразный курсор, с помощью которого вы должны выбрать любое окно, нажав на него, и xkillпринудительно отключит процесс, которому принадлежит это окно, от X сервер (программа, которая отображает весь ваш графический интерфейс).

    Эффект этого действия отличается между процессами, но если вы xkillиспользуете окно терминала, оно отправит SIGHUPсигнал процессам, которыми он управляет, и это обычно заставляет их выйти.

  • pkillУтилита (на Debian и его производных, в котором он находится на procpsупаковке) может быть использован для передачи сигнала к набору процессов, имя которого совпадает с определенной строки.

    Итак, если вы хотите убить srmпроцесс, который, как вы знаете, выполняется в вашей системе, вы можете запустить

     $ pkill -9 srm 

чтобы сбить все процессы, названные srmв системе.

-1
xenoid

Настоящий ответ здесь

TL; DR с современными дисками (включая все, что может вместить 7 ГБ), вам не нужно быть таким параноиком.

Так как вам нужно только переписать ваш файл с нулями:

shred -n 0 -z trashed.dat 
  • где -n 0означает 0 проходов со случайными данными (без этого вы получите 3 прохода по умолчанию со случайными данными, но это все еще излишне)
  • -z один последний проход с нулями (нужен только один)

Учитывая это, чтобы эффективно закончить безопасное стирание:

  1. остановить текущую команду
  2. запустите shredкоманду выше

( готовясь к внезапному падению кармы ... )

Вопрос был не «это нужно», а «как я могу сделать паузу». Так что это не ответ на заданный вопрос. Paul 6 лет назад 0
Да, это. Ответьте на часть X проблемы XY ... Остановите ее и используйте что-то еще, что будет выполняться намного быстрее. xenoid 6 лет назад 0
Включая это, и решение будет ответом на вопрос, это не так. Пожалуйста [отредактируйте] и предоставьте детали. Paul 6 лет назад 0