На самом деле, лучший способ корректно закрыть соединение — отправить заголовок Content-Length
, как показано ниже. Клиент (, как и curl
, закроет соединение после получения данных.
DATA="Date: $(date)";
LENGTH=$(echo $DATA | wc -c);
echo -e "HTTP/1.1 200 OK\nContent-Length: ${LENGTH}\n\n${DATA}" | nc -l -p 8000;
Предполагая, что вы ссылаетесь на crontab вашего собственного пользователя, чтобы избежать дублирования определения JAVA_HOME
, вы можете export
использовать переменную в~/.zshenv
(вместо ~/.zshrc
), которая читается даже в не -интерактивном режиме, не -оболочки входа в систему и запустите zsh -c 'sh /path/to/script'
в своем задании cron (, заменив sh
, исходя из того, что на самом деле представляет собой программа, называемая «оболочкой Bourne» в вашем вопросе, если это уместно ).
В качестве альтернативы, если вы согласны с определением JAVA_HOME
в нескольких местах и если ваша sh
реализация поддерживает это 1 , вы можете export
его в ~/.profile
и вызвать sh
как оболочку входа в систему, либо добавив -l
к shebang скрипта, либо изменив команду задания cron на sh -l /path/to/script
.
Хотя, в конце концов, наиболее удобным решением будет просто добавить
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/
в виде строки в верхней части вашего crontab (, если у вас нет отдельных заданий cron, которым нужны разные значения JAVA_HOME
, конечно ).
1Ваш sh
, который вряд ли будет «настоящей» оболочкой Борна, может иметь параметр -l
, если он на самом деле является ссылкой на (, например)bash
или dash
. Как Stéphane Chazelas указал в комментарии , 1 ), он не имеет его, если это оболочка Bourne или реализация POSIX sh
(, например, sh
не имеет опции -l
в {Free,Net,Open}BSD ); и 2 )не все реализации, поддерживающие -l
, будут читать ~/.profile
при наличии этой опции.
Вы можете установить это в обоих общесистемных конфигурационных файлах соответственно/etc/bash.bashrc
(/etc/bashrc
в системах, отличных от -Debian )и/etc/zsh/zshenv
(/etc/zshenv
Поскольку синтаксис тот же, вы можете просто скопировать -вставить
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/
что в обоих файлах