Команда, которая не находит реальный путь команды

По умолчанию команда tee прекращает запись и закрывает файл после получения сигнала остановки (a Ctlr-C , посылаемый командой timeout ).

Просто добавьте опцию -i в tee и развлекайтесь.

Пример:

#!/bin/bash
while true; do
        timeout -s 2 1h ping 96.120.16.121 | 
        ts '%Y-%m-%d~%H:%M:%S' |
        tee -i ping_$(date +'%Y-%m-%d_%H.%M.%S').log
done

-121--216736-

Чтобы пропустить fsck только один раз (вместо того, чтобы отключать его постоянно с помощью fstab или tune2fs ), попробуйте использовать следующие параметры:

  1. временно добавьте параметр быстрых загрузок GRUB перед загрузкой. Для получения дополнительной информации перейдите по ссылке https://wiki.ubuntu.com/Kernel/KernelBootParameters
  2. touch/fastboot также следует пропустить проверку fsck при следующей загрузке

-121--39544-

Это выполняется бесконечно, никогда не перезапускает ping, ping периодически печатает статистику (настройте sleep в следующем коде). Bash является необязательным, это совместимо с/bin/sh. Вы можете убить это с помощью CTRL-C или SIGHUP, SIGINT, SIQUIT или SIGTERM.

#!/bin/sh

trap 'kill -TERM $! 2>/dev/null; exit' HUP INT QUIT TERM

while true; do
        (
            ping localhost 2>&1 &
            trap "kill -INT $!" HUP INT QUIT TERM
            while true
            do
                sleep 5;
                if ! ps $! > /dev/null || ! kill -QUIT $!
                then break
                fi
            done &
            wait
        ) |
        ts '%Y-%m-%d~%H:%M:%S' |
        tee -i ping_$(date +'%Y-%m-%d_%H.%M.%S').log
done

-1
05.06.2018, 18:17
1 ответ

Исполняемый файл hadoopв /usr/binявляется символической ссылкой на /usr/hdp/current/hadoop-client/bin/hadoop. Вполне вероятно, что цель для этой символической ссылки не существует. Если он существует, следует исследовать его, чтобы убедиться, что он является исполняемым.

whichне отображал бы его, если символическая ссылка указывала на файл, в котором либо отсутствовала (неработающая символическая ссылка ), либо он не был исполняемым.

Кроме того, обычно лучше использовать command -v, а не which(, особенно в скриптах, которые должны быть переносимыми ).

Связанные:

3
28.01.2020, 05:07

Теги

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