Ваш веб-сайт и серверы DNS - все на той же подсети (174.123.210.242 - 244). Это - единая точка отказа.
Та сеть имела некоторые проблемы возможности соединения (я не могу воспроизвести их теперь), таким образом, не только сделал Вашу остановку сайта ответить, но и для некоторых, что домен прекратил бы разрешать также. Это также заставило бы входящую электронную почту возвращаться вместо очереди.
Вложите капитал в некоторый разнообразный хостинг DNS, так, чтобы Ваш DNS продолжил работать, даже если основной веб-хостинг понижается. Поиск Google "вторичного поставщика DNS" должен показать много.
stdout - это экран. Между stdout и «экраном» нет разделения.
В этом случае я бы просто временно перенаправил stdout на stderr с помощью 1> & 2
внутри подоболочки. Это приведет к тому, что выходные данные команд будут отображаться на экране, но их не будет в потоке stdout программ.
#!/bin/bash
# the output of these commands shouldn't go to STDOUT, but still appear on screen
# Start a subshell
(
1>&2 # Redirect stdout to stderr
some_cmd foo bar
other_cmd baz
)
# At the end of the subshell, the file descriptors are
# as they usually are (no redirection) as the subshell has exited.
#the following command creates a tar.gz of the "whatever" folder,
#and outputs the result to STDOUT
tar zc whatever/
Есть ли причина, по которой вам нужно перенаправить выходные данные этого сценария во что-то еще? Обычно вы просто записываете tar в файл с помощью флага -f
или выполняете перенаправление только для команды tar: tar zc независимо от файла> filename.tar.gz
(если вы не помещали его на такое устройство, как магнитная лента, или использовали его как форму копии).
Разве не было бы намного проще, если бы вы использовали переключатель -f
в команде tar, чтобы указать tar записывать в файл?
tar zcf whatever.tar.gz whatever/
Если это не так ' Если вы делаете то, что хотите, вам придется перенаправлять каждую команду, которая может записывать в STDOUT
some_cmd foo bar 1>&2
Я думаю, вы ищете какой-то вид мультиплексирования.
Это простой пример того, как добавить метку времени к каждой строке std out: http://www.podciborski.co .uk / programming / perl / add-a-timestamp-to-every-stdout-line /
Вы можете использовать какой-нибудь специальный тег вместо временной метки для маркировки строк журнала. Тогда вам придется удалить эти строки на другом конце. Таким образом, использование будет таким:
ssh user@remoteserver the_script.sh | create_tar.sh filename
create_tar.sh должен быть скриптом, который печатает строки с тегом журнала и перенаправляет другие строки в файл.