Вывод strace показывает, что 'write' работает с дескриптором файла 8. Чтобы определить, какой дескриптор файла 8, вам нужно посмотреть на / proc /
], в данном случае / proc / 9358 / fd
. 9358 - это PID, который вы отслеживали, а fd содержит дескрипторы открытых файлов для PID.
Вы можете увидеть текущие файловые дескрипторы для вашего запущенного bash, если посмотрите:
/ proc / $$ / fd
Итак, если вы сделаете это выше, вы увидите 8 символьных ссылок на файл что это расслабляет. Если вам нужно больше времени, отправьте SIGSTOP
процессу аудио / видео, пока вы выполняете эту работу, а затем, когда вы будете довольны, вы можете SIGCONT
процесс, чтобы он мог продолжаться. со своей работой. Очевидно, что если этот процесс является частью сетевой службы, такой как веб / ftp / электронная почта, вы можете не захотеть прерывать его, поскольку это может повлиять на QoS для ваших пользователей.
Если вам повезет, вы, вероятно, сможете сделать что-то подобное, что сэкономит вам немного времени при определении идентификатора процесса.
pkill -STOP -f 'av binary name'
Там может даже быть файл конфигурации, хранящийся в / etc для вашего аудио / видео программного обеспечения, который может определять рабочий каталог.
В результате получается один и тот же пустой файл.
Можно даже просто использовать > baz2
.На мой взгляд, немного более элегантно, так как не зависит от наличия / dev / null
и не требует вызова дополнительных команд / процессов.
Имейте в виду, что в отличие от touch
, результатом > baz2
будет пустой файл, даже если baz2
уже существует и имеет некоторое содержимое.
$ touch foo
$ cp /dev/null bar
$ cat /dev/null >baz
$ >baz2
$ ls -l
total 0
-rw-rw-r-- 1 ec2-user ec2-user 0 Apr 14 21:40 bar
-rw-rw-r-- 1 ec2-user ec2-user 0 Apr 14 21:40 baz
-rw-rw-r-- 1 ec2-user ec2-user 0 Apr 14 21:40 baz2
-rw-rw-r-- 1 ec2-user ec2-user 0 Apr 14 21:39 foo
$
Разница в том, что происходит, если файл уже существует и имеет содержимое:
Например, вот файл с содержимым:
$ ls -l ca/root-ca/db/root-ca.db
-rw-r--r-- 1 sweh sweh 6 Apr 14 18:06 ca/root-ca/db/root-ca.db
$ touch ca/root-ca/db/root-ca.db
$ ls -l ca/root-ca/db/root-ca.db
-rw-r--r-- 1 sweh sweh 6 Apr 14 18:06 ca/root-ca/db/root-ca.db
$ cp /dev/null ca/root-ca/db/root-ca.db
$ ls -l ca/root-ca/db/root-ca.db
-rw-r--r-- 1 sweh sweh 0 Apr 14 18:06 ca/root-ca/db/root-ca.db
Мы видим, что команда touch
не опустела файл, но cp
сделал.
Обычно вместо этого можно использовать команду :
:
: > ca/root-ca/db/root-ca.db
например,
$ ls -l ca/root-ca/db/root-ca.db
-rw-r--r-- 1 sweh sweh 6 Apr 14 18:08 ca/root-ca/db/root-ca.db
$ : > ca/root-ca/db/root-ca.db
$ ls -l ca/root-ca/db/root-ca.db
-rw-r--r-- 1 sweh sweh 0 Apr 14 18:08 ca/root-ca/db/root-ca.db
Однако в обучающих заметках и курсовых работах это может быть труднее читать, это может быть сочтено опечаткой или похожий. Иногда лучше использовать более длинную командную строку: -)