Получить 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 
  • Пара арифметических связанных команд, Dash, POSIX shell, sh, Increment
  • Какая цель переназначает переменную себе через эхо?
  • что означает флаг -z здесь
  • Как вводить нажатия клавиш через скрипт оболочки?
  • Преобразование единиц CSV
  • Запустите команду CDO "remapnn"
  • Создать каталог для каждой строки в данном текстовом файле?
  • Ожидание / dev / sda1, чтобы стать доступным, с таймаутом, в сценарии оболочки
  • сценарий оболочки для управления количеством процессов пользователя
  • Различные способы выполнения сценария оболочки
  • Регулярное выражение для соответствия числам с плавающей запятой в сценарии оболочки
  • Interesting Posts

    Способ интерактивного редактирования некоторого текста из оболочки

    SSL-сертификаты ca-certificates.crt и ssl-cert-snakeoil.pem истек – что делать?

    Откройте любой файл .c с Sublime Text, используя команду терминала

    Как выполнить замену на месте, которая создает только резервные копии файлов, которые были изменены?

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

    Несколько строк ввода для нескольких переменных

    Установка драйвера Nvidia для GTX 760m под Linux

    Распределения Linux для процессоров ARM

    Почему «ncal -CM» не работает, но «ncal -MC» делает?

    mbsync: переместить вложенные папки в корень

    Использование переменных среды в командах командной строки состояния Tmux

    Multi-Graphics Cards, Multi-Heads, 3 + монитор с использованием Nouveau, GDM3 и Debian 8.6

    Отключение SSH от внутренней сети

    размер каталога в conky

    Настенное сообщение предупредило о предстоящей перезагрузке или завершении работы, но я пропустил детали. Как я могу их получить?

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