Получить PID создания файла

Я пишу сценарий bash, который создает 5 файлов с расширением «.P» и записывает в них строку «что-то». «P» представляет число, и это PID процесса, который создает файл. Как вы можете это сделать? Я создаю свой файл и записываю его так: echo "something" > file_name

2 Solutions collect form web for “Получить PID создания файла”

Если вы хотите узнать PID текущего сеанса bash (который вполне может быть тем, который запускает ваш сценарий оболочки и ничего больше), вы можете использовать либо $$ либо ${BASHPID} . Они похожи, но тонко отличаются; цитируя справочную страницу GNU bash 4.2, раздел «Переменные оболочки»:

BASHPID

Расширяется до идентификатора процесса текущего процесса bash. Это отличается от $$ при определенных обстоятельствах, таких как подоболочки, которые не требуют перезапуска bash.

Вы также можете найти ${PPID} полезным; он содержит идентификатор процесса родительского процесса текущего сеанса bash. Если вы хотите пойти дальше, вам придется написать код, чтобы пройти дерево процессов, и это почти наверняка будет зависящим от ОС.

В качестве примера попробуйте echo "something" > file_name.$$ в своей оболочке. И если вы делаете что-либо серьезное, всегда указывайте все, что связано с переменными среды, которые вы сами не задали известному безопасному значению.

Если вы хотите, чтобы PID процесса, изначально создавшего файл, как указано в названии, я сомневаюсь, что это возможно (хотя это будет зависеть от того, какая именно ОС вы используете). Это просто не будет полезной частью информации для хранения в общем случае, поскольку PID как повторно используются, так и обычно более или менее случайны. В многозадачной многопользовательской системе они для всех целей и задач будут случайными для любого данного пользователя.

Попробуйте этот скрипт

 #!/bin/sh for i in `seq 5` do pid_var=`grep ^Pid: /proc/self/status | awk '{print $2}'` echo "something $$" > /tmp/filename$i.$pid_var done 

Его вывод будет примерно таким:

 filename1.1234 filename2.1235 filename3.1236 filename4.1237 filename5.1238 
  • Поиск / usr / dict / words для поиска слов с определенными свойствами
  • Выполнение команд с помощью сценария ssh и оболочки с использованием переменных на удаленной машине
  • Сценарий Bash для scp-интерпретации тильды (~) слишком рано
  • Извлеките подстроку из значения переменной
  • ожидать сценария для получения вывода для нескольких серверов
  • Сценарий оболочки Bash для удаления указателя в имени файла
  • Присоединенные трубопроводы
  • Как запустить скрипт bash из сценария sh (dash)?
  • Учитывая две фоновые команды, завершите оставшуюся, когда либо выйдет
  • Динамическая конфигурация пользователя для git с помощью сценария-оболочки?
  • В строке использования моего пользовательского сценария оболочки также должен отображаться --help и --version?
  • Interesting Posts

    Огромный отвод батареи во время приостановки до выключения – 12% / час – карта nvidia не отключается

    Установка пользовательских пакетов в Linux

    Заменить вхождения символов в имена файлов

    Как получить пароль без пароля ssh между любыми двумя узлами в кластере серверов

    Должен ли я использовать XFS или ext4?

    Странные вещи случаются, когда я закрываю крышку ноутбука

    Как обеспечить, чтобы строка, интерполированная в подстановку sed, избегала всех метамарков

    Как найти устройство, чей основной идентификатор – «fd»,

    Загрузка PXE Live CD

    Сед и две последовательные линии

    Запуск для цикла с двумя переменными?

    Как следить за потоками tcp непрерывно вдоль захвата с помощью tshark / wireshark?

    Как получить общий размер всего в каталоге в одной строке?

    Как использовать terminfo для установки цветов для человека и менее?

    Как ускорить восстановление «застрявшей» cifs mount?

    Linux и Unix - лучшая ОС в мире.