Здесь существует подобное обсуждение, которое упоминает, что добавило значение сна для задержки запуска. Они упоминают, что добавили, что следующее к/etc/rc.local помогло запустить его на начальной загрузке:
sleep 10000
/etc/init.d/zentyal start
но меньшее значение такой как sleep 10
может работать. Кажется, что Ваш сервис может быть /etc/init.d/isc-dhcp-server
и нет /etc/init.d/zentyal
, но та же идея.
Я не уверен если /etc/rc.local
относится к Linux Mint, но другая опция состоит в том, чтобы добавить sleep 10
к самому init.d сценарию как первая команда.
echo '0A'
производит три символа: NL на 0 А; xxd -b
затем распечатает те три символа в двоичном файле. Если Вы хотели просто единственный байт, значение которого равняется 10 (т.е. шестнадцатеричный A
), Вы могли записать (в ударе):
echo -n $'\x0A'
^ ^ ^
| | |
| | +-- `\x` indicates a hexadecimal escape
| +----- Inside a $' string, escapes are interpreted
+------- -n suppresses the trailing newline
Лучшая альтернатива была бы printf '\x0A'
; printf интерпретирует escape-последовательности в строке формата и не производит неявные новые строки. (Это - Posix-совместимое решение, которое должно работать над любой Posix-совместимой оболочкой.) Еще одна возможность удара echo -n -e '\x0A'
; (нестандартный) -e
флаг просит отзываться эхом для интерпретации escape-последовательностей.
Я понятия не имею, почему Вы ожидали бы echo '1' | xxd -b
производить эквивалент шестнадцатеричного числа 50
. Как Вы ожидаете xxd
понять это 0A
шестнадцатеричное число и 1
не? Кроме того, почему 50
? (Код ASCII для символа 1
шестнадцатеричное число 31
.)
Порядок байтов не влияет на байты. Порядок битов в байте совершенно концептуален, пока байт не передается по последовательной линии, и даже затем это только видимо с осциллографом или чем-то подобным.
Да, можно использовать xxd
чтобы сделать это, но Вам не может понравиться формат ввода. От Вашего примера 0x0a является шестнадцатеричным значением новой строки ASCII. Можно создать файл с единственной новой строкой в нем, затем использовать xxd
создать список:
$ xxd one_line_file
0000000: 0a .
Можно получить единственную новую строку из xxd
от того вывода, если Вы даете ему надлежащие флаги:
$ echo "0000000: 0a" | xxd -r > another_one_line_file
$ xxd another_one_line_file
0000000: 0a
xxd
имеет довольно хороший выходной формат, я не думаю, что это было бы слишком обременительно, чтобы создать Ваши пакеты с помощью текстового редактора, затем использовать xxd -r
перейти к двоичному файлу..
Если вы хотите, чтобы двоичный вывод для строки шестнадцатеричных цифр, XXD -R -P
. E.g.
$ echo '0A0B0C0D' | xxd -r -p | xxd -b
0000000: 00001010 00001011 00001100 00001101 ....
Converts 0A0B0C0D в четыре байта двоичного (первый звонок к XXD), а затем преобразует его обратно для печати (второй вызов). Вы говорите, что хотите двоичного вывода, но примеры, которые вы пытаетесь, - это печатное представление.
Я ничего не знаю, где целенастинцы неоднозначны на уровне нехватки, так как вы подразумеваете во втором примере. Преобразование в XXD - это чистый байт за раз, не предполагающий, что они представляют какое-либо конкретное многобайтовое число.
50
. Это - опечатка. При фиксации его теперь – TheMeaningfulEngineer 04.02.2014, 23:27