Смотрит на меня, Вы уже имеете mysql
демон, работающий. Я не проверил ссылки выше, но если Вы сделали запись в /etc/rc.local
или имейте /etc/rc.d/rc.mysqld
необходимо знать, что эти записи используются для запуска mysql сервера во время процесса начальной загрузки.
Выполненный nmap
против Вашего хоста после начальной загрузки, чтобы видеть, работает ли услуга.
А not-very-portable, определенное для Linux решение могло состоять в том, чтобы отследить процессы с помощью каналов, которые соединяют их. Мы можем получить PIDs первого ( задания-p
) и в последний раз ( $!
), управляет в конвейере. Используя любой PID, этот сценарий мог сделать задание:
#! /bin/bash
PROC=$1
echo $PROC
if [[ $(readlink /proc/$PROC/fd/1) =~ ^pipe: ]]
then
# Assuming first process in chain...
NEXT_FD=1
elif [[ $(readlink /proc/$PROC/fd/0) =~ ^pipe: ]]
then
# Last process in chain...
NEXT_FD=0
else
# Doesn't look like a pipe.
exit
fi
NEXT_PROC_PIPE=$(readlink /proc/$PROC/fd/$NEXT_FD)
while [[ $NEXT_PROC_PIPE =~ ^pipe: ]]
do
PROC=$(find /proc/*/fd -type l -printf "%p/%l\n" 2>/dev/null | awk -F'/' '($6 == "'"$NEXT_PROC_PIPE"'") && ($3 != "'$PROC'" ) {print $3}')
NEXT_PROC_PIPE=$(readlink /proc/$PROC/fd/$NEXT_FD)
echo $PROC
done
для оригинальной версии вопроса, когда только последний Была желанная команда PID, специальная переменная $!
идеально.
foo | bar | baz &
baz_pid=$!
Нет аналогичного легкого доступа к PID других процессов.
Это потребовалось много времени для $ Pibestatus
(ZSH) и $ Piberestatus
(Bash), наконец, давая нам доступ ко всем статусам выхода в трубопроводе, В дополнение к $?
за последний, который был рядом с оригинальной оболочкой Bourne. Может быть, что-то аналогично произойдет с $!
в конце концов.
В этом коде я использую массивы на основе нуля -. Просто будьте осторожны с тем, что вы используете eval
.
#!/bin/bash
cmd=('sleep 10' 'sleep 2' 'sleep 5')
first=1
for c in "${cmd[@]}"; do
((first)) && { pipe=$c; first=0; } || pipe+='|'$c
done
shopt -u lastpipe
eval $pipe &
printf 'Pipe:\n%s\n\n' "$pipe"
shellpid=$BASHPID
parent=$(ps -o pid= --ppid $shellpid | head -n -1)
declare -a pids=()
mapfile -t pids < <(printf '%s\n' $(ps -o pid= --ppid $parent))
printf '%s\n' 'Listing the arrays:'
printf '%2s %6s %s\n' i PID command
for i in "${!cmd[@]}"; do
printf '%2d %6d %s\n' "$i" "${pids[i]}" "${cmd[i]}"
done
printf '\n%s\n' 'ps listing:'
ps xao pid,ppid,command | head -n 1
ps xao pid,ppid,command | tail | head -n -3