Команда rm -f возвращает «недопустимый аргумент» mv, chmod встретился с тем же результатом

Теперь это работает так, как я хочу. Я создал 2 правила udev -. 1. стереть устройство /dev/input/js0.

cat /etc/udev/rules.d/98-accelerometer.rules 
# joystick-fix
SUBSYSTEM=="input", ACTION=="remove", ATTRS{name}=="Acer BMA150 accelerometer", ATTRS{phys}=="wmi/input1", RUN+="/bin/rm  %E{DEVNAME}"
SUBSYSTEM=="input", ACTION=="add", ATTRS{name}=="Acer BMA150 accelerometer", ATTRS{phys}=="wmi/input1", RUN+="/bin/rm  %E{DEVNAME}"

К сожалению, Linux помнит это устройство, и мой геймпад снова был /dev/input/js1.

2. создает символическую ссылку /dev/input/js0, поэтому мой эмулятор больше не работает.

cat /etc/udev/rules.d/99-joystick.rules 
#joystick-fix 2. part
ACTION=="add", KERNEL=="js[1-9]", SUBSYSTEM=="input", ATTRS{product}=="USB Joystick     ", SYMLINK+="input/js0"
2
24.10.2019, 17:24
1 ответ

«Недопустимый аргумент», вероятно, исходит из perror, , сообщающих об ошибке EINVAL , установленной unlink.

Согласно справочной странице , EINVAL может произойти только с unlinkat, но не для unlink, а выходные данные фермы показывают вызов unlink, так что ситуация кажется невозможной. И все же мы здесь.

Я нашел несколько других сообщений об утилитах, сообщающих о «Недопустимом аргументе», когда базовая файловая система не могла обработать кодировку имени файла.

Это, вероятно, не проблема для вас, так как ваше имя файла кажется простым символом ASCII, но я подозреваю, что и здесь EINVAL устанавливается специальным кодом файловой системы -, вызываемым системным вызовом unlink,так что это будет зависеть от того, какую файловую систему вы используете. В кластере NAS Isilon это, вероятно, OneFS , если только она не находится в странном расположении (, например tmpfs, или на монтировании FUSE ), или на съемном носителе.

В таком случае вам, вероятно, потребуется найти настоящего инженера в Isilon, чтобы он покопался в коде и выяснил, что может вызвать ошибку EINVAL при разъединении.

0
27.01.2020, 22:24

Теги

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