Добавление символа к имени файла

Для этого можно использовать 2 низкоуровневых инструмента: strace и gdb . Доступность strace предполагает, что вы используете Linux или ОС, в которой он работает. Для других ОС у вас может быть truss или dtrace , но методика аналогична.

strace

Итак, strace проще в использовании, чем gdb , и обычно отлично отвечает на вопрос «что делает это приложение». Типичное использование (для меня) будет примерно таким:

strace -f -tt -s 200 -p $PID

Единственный реальный вариант, который вам нужен, - это -p $ PID . Другие параметры просто добавляют дополнительную информацию в строку вывода, но в действительности они не нужны.

Это показывает каждый системный вызов, выполняемый приложением. Единственный способ, которым приложение может что-то делать, а strace не показывает этого, - это чисто вычислительные операции. Имеется в виду хрустящие числа или что-то в этом роде. Такие вещи, как чтение / запись файла, отправка пакета, получение текущего времени и т. Д., Требуют системного вызова и будут отображаться.

gdb

gdb является более низким уровнем, чем strace . gdb покажет вам, какая строка кода на самом деле выполняется приложением.Однако здесь есть несколько подводных камней. Важным является то, что вам нужны отладочные символы для приложения. В пакетах, предоставляемых дистрибутивом, они обычно были удалены. Однако в таких дистрибутивах, как производные от RedHat, они часто предоставляются в виде pkgfoo-debuginfo-1.2.3.rpm . Вы можете просто установить этот пакет и вернуть символы. Другое дело, что где strace покажет вам, что приложение делает с течением времени, gdb покажет вам, что приложение работает именно в этот момент, так как замораживает процесс, пока вы его проверяете.

Так или иначе, использование выглядит так:

gdb -p $PID

... что приведет вас к интерактивной оболочке, где вы можете запустить что-то вроде:

where

или

info threads

Я не буду вдаваться в подробности того, как использовать gdb , так как в зависимости от сложности вашего приложения это может быть сложно, и в Интернете есть множество руководств.

Когда вы закончите копаться в процессе и захотите, чтобы он продолжился, просто используйте quit или CTRL + D .

1
02.04.2017, 16:02
2 ответа
for file in ????_*
do
  mv -- "$file" "0${file}"
done
1
27.01.2020, 23:46
rename 's/^\d{4}_\d{4}$/0$&/' *

Или это,

rename 's/^/0/' [0-9][0-9][0-9][0-9]_[0-9][0-9][0-9][0-9]
0
27.01.2020, 23:46

Теги

Похожие вопросы