Я не знаю об ударе мерзавца, но возможно
if [ "$(tr -cd '\r' < file | wc -c)" -gt 0 ]; then
echo there are CR characters in there
fi
работал бы. Идея быть для не использования текстовых утилит, которые могут рассматривать символы CR и LF особенно.
Если это не работает, то, возможно,
if od -An -tx1 < file | grep -q 0d; then
echo there are CR characters in there
fi
Сцепляться в находку:
find . -type f -exec sh -c 'od -An -tx1 < "$1" | grep -q 0d' sh {} \; -print
Существует сервис, это уже включено с Linux, который обеспечивает эту функцию, это называют xinetd
. Red Hat поддерживает довольно хорошую документацию относительно их веб-сайта, названного: 2.6.4. Конфигурационные файлы xinetd. Сервис xinetd
позволяет Вам устанавливать основной сервис, который послушает на определенных портах и затем запустит другие приложения, когда связи будут установлены на упомянутых портах.
выборка из xinetd страницы справочника
xinetd выполняет ту же функцию как inetd: это запускает программы, которые обеспечивают интернет-сервисы. Вместо того, чтобы запустить такие серверы в системное время инициализации и бездействовать, пока не прибывает запрос на установление соединения, xinetd является единственным запущенным процессом демона, и он слушает на всех портах услуг для сервисов, перечисленных в его конфигурационном файле. Когда запрос входит, xinetd запускает соответствующий сервер. Из-за пути это работает, xinetd (а также inetd) также упоминается как суперсервер.
Примечание: Если это не установлено, можно установить его, пакет обычно называют xinetd
.
После того как это установило Вас конфигурационные файлы места в соответствии с этим каталогом, /etc/xinetd.d
. Например, давайте создадим названный сервис minecraft
.
# /etc/xinetd.d/minecraft
service minecraft
{
disable = no
type = UNLISTED
socket_type = stream
protocol = tcp
wait = no
server = /path/to/minecraft/server
bind = <ip of minecraft server>
port = 25565
user = root
}
С вышеупомянутым файлом на месте можно затем вручную запустить xinetd
проверить вещи.
$ sudo service xinetd start
Теперь, когда Вы пытаетесь соединиться со своей системой через порт 25565, сервер Minecraft должен запустить, и необходимо смочь получить доступ к нему. Вы, возможно, должны были бы корректироваться user = ..
строка любому пользователю в конечном счете владеет сервером.
Для создания этого персистентным, можно использовать любой механизм использование дистрибутива для запуска сервисов автоматически во время начальной загрузки.
netcat
nc-l 1234
Используя вторую машину, соединитесь с listeningncprocess
nc host.example.com 1234 < echo hello
После того, как пакет был передан, соединение закроется автоматически
теперь используйте код возврата. nc-l 1234 && echo someone connected
/server/minecraft/bukkit/start.sh
как пользовательminecraft
. Сервер работает на локальной сети, но передается от моего маршрутизатора, и я могу соединиться с ним, если это вручную работает. (которым я имею в виду, выполняясьstart.sh
вручную) Это - IP, и порт на LAN192.168.2.200:25565
. Одновременно не должно быть двух серверов.start.sh
запускает программу Java через экран. – Jochem Kuijpers 16.01.2014, 17:19