Как написать скрипт для уничтожения PID (цикл If else)? [закрыто]

Я предполагаю, что ваши имена файлов не содержат встроенных символов новой строки.

В Linux:

#! /usr/bin/env bash
find /some/dir -type f -maxdepth 1 \! -name '*.gpg' | \
while read -r f; do
    esc=${f##*/}
    esc=${esc//\\/\\\\}
    esc=${esc//\"/\\\"}
    md5=$(md5sum "$f".gpg | awk '{print $1}')
    printf '"%s" "%d" "%d" "%s"\n' "$esc" $(stat -c %s "$f") $(stat -c %s "$f".gpg) "$md5"
done

В *BSD:

#! /bin/sh
find /some/dir -type f -maxdepth 1 \! -name '*.gpg' | \
while read -r f; do
    esc=$(printf '%s\n' "$f" | sed 's#.*/##; s/\([\\"]\)/\\\1/g')
    md5=$(md5 -q "$f".gpg)
    printf '"%s" "%d" "%d" "%s"\n' "$esc" $(stat -f %z "$f") $(stat -f %z "$f".gpg) "$md5"
done
0
13.01.2020, 12:30
2 ответа

На тривиальном уровне я не совсем уверен, почему этого недостаточно.

[[ -s "/scripts/pid_$DATE.txt" ]] && kill $(cat "/scripts/pid_$DATE.txt")

Или нужно убить только первого, а остальных оставить в покое?

if [[ -s "/scripts/pid_$DATE.txt" ]] 
then
    while IFS= read -r pid
    do
        kill "$pid" && break
    done <"$scripts/pid_$DATE.txt"
fi

В обоих случаях предполагается, что сценарий имеет достаточные привилегии, чтобы сигнализировать целевым процессам, и что файл "$scripts/pid_$DATE.txt"либо не существует, либо является доверенным и датирован с -по -.

2
28.01.2020, 02:22

Не совсем понятно, но "убить" не застревает, так что,

while read pid; do kill "$pid"; done < "/scripts/pid_$DATE.txt"

или добавьте -9, чтобы убить, чтобы принудительно убить ваш процесс

1
28.01.2020, 02:22

Теги

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