Я принимаю USB, Вы имеете в виду pendrive или внешний жесткий диск, смонтированный к Вашей файловой системе. Вы "отсоединяете" это путем размонтирования устройства. Для этого необходимо будет использовать команду umount. Можно использовать устройство или точку монтирования, например:
umount /dev/sdb1
или umount /mnt/usb
Посмотрите человека umount для получения дополнительной информации.
Для того, чтобы закрыть Вашу систему, Вы используете shutdown
команда. -h
"Остановится или выключится после завершения работы". В странице справочника говорится:
SYNOPSIS
/sbin/shutdown [-akrhPHfFnc] [-t sec] time [warning message]
Таким образом, можно использовать его для завершения работу системы после определенного количества времени. Следующая команда остановит Вашу систему после 30 минут:
shutdown -h 30
Теперь у Вас есть одна команда, которая должна только выполняемый после того, как другой был succesfull. Это сделано с &&, сокращением от условного оператора и функции Вашей оболочки (Примечание: || существует также). Вторая команда будет только выполняться если первая, возвращенная без любых ошибок. Это обозначается кодом возврата 0. Например:
umount /dev/sdb1 && shutdown -h 15
отсоединит Ваш USB и остановит Вашу систему после 15 минут.
Если это не отвечает на Ваш вопрос, более конкретны.
Что-то как...
ps ax|grep ntpd|cut -b1-5|xargs -I PID find /var/run/ -type f -exec grep '-l' '^PID$' {} ';'
Обратите внимание что grep
шаблон указывает, что строка поиска должна быть единственной вещью на строке, т.е. это
start(^)
string (PID is replace by value sent to `xargs`)
end($)
PS: Я протестировал это путем выполнения ps ax > /var/run/psaxdump
сопровождаемый вышеупомянутым. Это только нашло ntpd.pid
Поместите требуемый текст в файл, затем работайте cmp
на каждом файле кандидата.
pgrep myproc >/tmp/the_pid
find /var -type f -size $(wc -c </tmp/the_pid)c -exec cmp -s /tmp/the_pid {} \; -print
Но для этого варианта использования, я перезапустил бы программу под strace -eopen
или с auditd
правило:
auditctl -F "ppid=$$,a2&0x100" -S open
/path/to/daemon
^index\.html
кому: ^yoursubfolder/index\.html
---------121 положительная сторона--------199430----@ysangkok, которую я заметил в Вашем ответе, но не думал при записи моего (чтобы рекомендовать перезапустить и использовать strace
, и также предложите cmp
вместо diff
).
– Gilles 'SO- stop being evil'
27.07.2012, 21:03
Можно передать Регулярное выражение grep, попробовать это: (принятие PID 67543),
grep -R '^67543$' /
В регулярном выражении ^
морковь (SP) средства символа "запускается строки", и $
конец "средств символа знака доллара строки", таким образом, regex выше только возвратит результат, где файл запускается и заканчивается строкой "67543".
od
. Я изменил бы его больше и сделал бы его более симпатичным, если 5 минимальных крайних сроков редактирования не истекли. od
не часть решения, она должна показать Вам что grep
дает неправильный результат для этой проблемы.
– Janus Troelsen
26.07.2012, 18:40
find searchtree -type f -size `stat -c%s needle`c | xargs -n1 diff -s needle
stat -c%s 1234
c | разность xargs-n1-s 1234 я получаю следующие ошибки: статистика: не может статистика 1234': No such file or directory find: Invalid argument
c' к - разность размера: недостающий операнд после 1234' diff: Try
разность - помогает' для получения дополнительной информации.
– BorrajaX
26.07.2012, 18:20
echo -n "thisiswhatiwanttosearchfor" > needle
. удалите "-n", если Вы хотите запаздывающую новую строку, которую Вы получаете на значение по умолчанию в большинстве текстовых файлов. если Ваш файл "иглы" называют "1234", конечно, необходимо использовать это вместо "иглы". соответствия
– Janus Troelsen
26.07.2012, 18:29
если pcregrep доступен в Вашей установке, Вы могли бы передать-l (перечислите имя файла),-r (рекурсивный) и-M (многострочные) флаги к нему, чтобы сделать задание. Обратите внимание, что \A и \Z представляют, запускаются и конец строковых привязок. В примере ниже, 12477 искавшая строка
pcregrep -l -r -M '\A12477\Z' dir
Если Ваша программа не запущена при начальной загрузке или вместе с огромным количеством других программ, Ваш pidfile должен быть столь же старым как процесс, который составляет меньше чем одну минуту в начале.
Если Вы знаете PID, Вы знаете, что это - длина, таким образом, можно сократить количество файлов для поиска еще больше:
find -type f -mmin -1 -size 6c -exec grep 12345 {} \;
Для 5 цифр использование PID 6c как размер, так как они содержат запаздывающую новую строку (от ysangkok как комментарий).
head -1
помог бы постараться не напрасно тратить время, читая в любых неожиданно огромных файлах. Если бы Вы хотите быть действительно педантичными, даже который имел бы ложные положительные стороны для файлов, которые запустились с PID на строке отдельно, но содержали другие данные. – Jander 27.07.2012, 16:53grep
только делает мудрое строкой сравнение. Как Jander отметил выше, это может привести к ложным положительным сторонам, так как любой файл, содержащий строку поиска, будет соответствовать. Подход жабр является намного более звуковым. – jw013 27.07.2012, 17:45