Что может быть причиной того, что getdents возвращает разные результаты на двух системах?

Используйте echoвместо cat, так как ваш $checkявляется переменной. Используйте, как показано ниже

check=$(ssh user@somesystem.com "/usr/local/bin/check_mq.sh")
ret=$?
cat=/bin/cat
awk=/usr/bin/awk
output=$(echo $check | $awk -F= '{print $4}' | $awk '{print $1}')
echo $output
2
12.03.2021, 22:22
1 ответ

Как видно из включенного режима verbose в strace (-v), эти вызовы getdents возвращали d_type=DT_REGна первой системе, но на второй d_type=DT_UNKNOWN. Причина этого в том, что хотя в первом случае используется файловая система ext4, во втором — prl_fs. prl_fsсама файловая система, по-видимому, не возвращает известный d_type.

Это вызывает пограничный случай в функции glob ()в glibc. Для этого сообщалось об ошибке glibc наhttps://sourceware.org/bugzilla/show_bug.cgi?id=25659

Я также связался со службой поддержки Parallels и попросил их прекратить возвращать DT _UNKNOWN как тип d _. Начиная с Parallels 16.5.0 -49183, они исправили это:)

5
18.03.2021, 22:25

Теги

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