我阅读了维基百科文章,/dev/null
并通过将文件移动到/dev/null
.
为此,我创建了一个test_file
并在其中放入了一些内容:
$ touch test_file
$ echo "This is written by Aditya" > test_file
$ cat test_file
This is written by Aditya
Run Code Online (Sandbox Code Playgroud)
此后我尝试将文件移动到/dev/null
:
$ mv test_file /dev/null
mv: inter-device move failed: ‘test_file’ to ‘/dev/null’; unable to remove target: Permission denied
Run Code Online (Sandbox Code Playgroud)
因为,这给了我一个Permission denied
错误;sudo
每当我遇到Permission denied
错误时,我都会像往常一样继续使用。
$ sudo mv test_file /dev/null
Run Code Online (Sandbox Code Playgroud)
命令成功并且test_file
不再存在于目录中。
但是,维基百科文章说无法恢复移动到的任何内容,/dev/null
并且它为EOF
任何尝试从中读取的进程提供了一个。但是,我可以阅读/dev/null
:
$ cat /dev/null
This is written by …
Run Code Online (Sandbox Code Playgroud) 我将运行 Ubuntu 服务器 15.04 的虚拟机更新为刚刚发布的新稳定版 15.10。
没有明显的问题,但重启后机器失去了网络连接。lspci
显示正确的卡并lsmod
证明驱动程序已加载。
关于编辑或删除的提示/etc/udev/rules.d/70-persistent-net.rules
没有成功(仍然没有网络,没有新文件),著名的/lib/udev/write_net_rules
甚至不存在。
我对 udev 和 systemd 没有太多线索,所以我花了一些时间在 /sys/class/net 中发现网络接口名称发生了变化。它变成了ens32
,从eth0
. 在我更改/etc/network/interfaces
网络通信后再次启用。
但是 - 为什么会发生这种情况?如果发生这种情况,接口文件不应该自动更新吗?
现在我把虚拟网卡删了又新建了,eth0
就变成了eno16777728
,不是这样,嗯,不错。
是否应将此行为(至少是升级过程的行为)报告为错误?
此外,现在/etc/udev/rules.d/70-persistent-net.rules
已经过时了吗?而且(虽然只是部分相关)呢/etc/udev/rules.d/70-persistent-cd.rules
?)
编辑 - 附加问题(在接受答案后)/etc/network/interfaces
从实际接口名称
的依赖困扰着我。我在另一台虚拟机中尝试了 *ubuntu 的新安装。令我惊讶的是,仅/etc/network/interfaces
包含对环回设备的引用。但是,对于我的原始 VM,此更改阻止了网络启动。那么我还需要改变什么?
编辑
好吧,从另一个测试中我发现一个新的 Ubuntu服务器在 中 具有网络接口卡/etc/network/interfaces
,而 XUbuntu 没有。也许它正在使用network-manager
或其他东西。
我已将eth1
界面名称更改为eth0
. udev
现在如何要求重新读取配置?
service udev restart
Run Code Online (Sandbox Code Playgroud)
和
udevadm control --reload-rules
Run Code Online (Sandbox Code Playgroud)
不要帮忙。那么除了重新启动之外还有其他有效的方法吗?(是的,重启有助于解决这个问题)
是的,我知道我应该在命令前面加上sudo
,但是我上面发布的任何一个都不会改变ifconfig -a
输出:我仍然看到eth1
,而不是eth0
。
我刚刚更改了NAME
udev-rule 行的属性。不知道有什么原因使这无效。
执行我上面发布的两个命令都没有任何错误,但它们只是不会更改ifconfig -a
输出中的实际接口名称。如果我执行重新启动 - 则接口名称会按预期更改。
出于开发目的,我编写了一些脚本来克隆虚拟机(VirtualBox 驱动)并以某种方式预先设置它们。
所以我执行一个命令来克隆 VM,启动它,只要网络接口 MAC 发生变化 -udev
将第二个规则添加到网络持久性规则中。机器第一次启动后,有两条规则:
eth0
,不存在,只要存在于原始VM镜像MAC中eth1
,它存在,但所有文件中的所有配置都指向eth0
,所以对我来说不是那么好所以我sed
删除了行eth0
(它在克隆图像中已经过时且无用)并替换eth1
为eth0
. 所以目前我有有效的持久规则,但仍然eth1
存在/dev
.
问题:我不想重新启动机器(这需要另外的时间,这在构建虚拟机阶段不是一件好事),只想/dev
用一些命令重建我的机器,这样我就有了随时可用的虚拟机没有任何重启。
以前有用的ThinkWiki 页面似乎已经过时了。我正在尝试永久更改我的 TrackPoint 灵敏度和速度设置并启用鼠标中键滚动。我过去尝试过 configure-trackpoint,但设置没有永久保存(重启后它们会丢失)。
我试过了gpointing-device-settings
。使用它,我可以让鼠标中键滚动工作,但我无法更改轨迹点的速度或灵敏度设置。我尝试过的 ThinkWiki 页面上的所有方法都无法按照 Ubuntu 11.04 中的指示工作。有人可以解释如何永久编辑 TrackPoint 设置以便我可以正确使用它吗?
我正在尝试从 Ubuntu(+Cinnamon) 机器上使用 adb。问题是我从adb devices收到以下消息:
List of devices attached
TA8830OIVO no permissions
Run Code Online (Sandbox Code Playgroud)
TA8830OIVO 是我的摩托罗拉 G 设备。
我在/etc/udev/rules.d/51-android.rules 中更改了 android 规则
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e76",
MODE="0666", GROUP="plugdev", SYMLINK+="android_adb", OWNER="axel"
Run Code Online (Sandbox Code Playgroud)
我还重新启动了 udev 服务,并在我的个人笔记本电脑上安装了 adb 我是唯一拥有所需所有特权的用户(plugdev 组等)。
有没有办法在不调用sudo 的情况下运行 adb ?
我在我的笔记本电脑 (Ubuntu 9.10) 上使用了许多相同的 USB 转串口适配器。这些适配器由 Sabrent 制造,并围绕 Prolific PL2303 IC 构建,如下所示lsusb
:
Bus 001 Device 008: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 007: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 006: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Run Code Online (Sandbox Code Playgroud)
显示的所有属性udevadm
似乎都不是特定适配器独有的:
foo@bar:~$ udevadm info --attribute-walk --path=/sys/bus/usb-serial/devices/ttyUSB0
looking at device
'/devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4.1/1-4.1:1.0/ttyUSB0':
KERNEL=="ttyUSB0"
SUBSYSTEM=="usb-serial"
DRIVER=="pl2303"
ATTR{port_number}=="0"
looking at parent device
'/devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4.1/1-4.1:1.0':
KERNELS=="1-4.1:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="pl2303"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bNumEndpoints}=="03"
ATTRS{bInterfaceClass}=="ff"
ATTRS{bInterfaceSubClass}=="00" …
Run Code Online (Sandbox Code Playgroud) 五天前,我在完全更新的 Ubuntu 2018.04 上安装了 Android Studio,使用向导创建了一个示例应用程序,按下“运行”按钮,它在我通过 USB 连接的 Android 设备上完美运行。
今天,在同一个 Ubuntu 上并插入同一个设备,我打开同一个项目并再次按“运行”。现在失败了:
Launching Application
$ adb push /home/nico/src/ActionBarCompat-Basic/Application/build/outputs/apk/debug/Application-debug.apk /data/local/tmp/com.example.android.actionbarcompat.basic
com.android.ddmlib.AdbCommandRejectedException: insufficient permissions for device: user in plugdev group; are your udev rules wrong?
See [http://developer.android.com/tools/device.html] for more information
Error while Installing APK
Run Code Online (Sandbox Code Playgroud)
我没有故意修改任何 Ubuntu 配置,甚至没有更新操作系统。
可能是什么问题呢?
如何进一步调查?
我尝试使用本教程使滚动开关在我的 Microsoft Natural Ergonomic Keyboard 4000 上工作。但我面临以下错误:
sudo: /lib/udev/keymap: command not found
Run Code Online (Sandbox Code Playgroud)
我有 udev 版本204-5ubuntu20.2
(在 Trusty 中找到的版本)
我注意到这个版本不包括keymap
工具。但我注意到更高udev
版本(例如可用于 Debian)包含此工具。
有人可以为我解释这个差异吗?=) 在这种情况下我应该怎么做 - 从 Debian 仓库安装软件包?
我有一个 USB 秤,一个 USB HID。目前,当它插入时,权限只允许超级用户访问它。如何配置 udev 以允许任何人访问此设备?我有供应商和产品 ID,但我想根据 HID 类型来匹配它。
现在,我很难找到任何适用于此的现有规则(我在/lib/udev/rules.d
和 中搜索了“hidraw” /etc/udev/rules.d
,等等)。
我的 Logitech R400 演示器发送以下关键代码:
keycode 112 (keysym 0xff55, Prior) [page up]
keycode 117 (keysym 0xff56, Next) [page down]
keycode 60 (keysym 0x2e, period)
keycode 71 (keysym 0xffc2, F5)
keycode 9 (keysym 0xff1b, Escape)
Run Code Online (Sandbox Code Playgroud)
基本上,我想用这个presenter远程控制Banshee,所以我想重新映射Prior
到B
,Next
到N
,等等。
如何仅更改此设备的键盘映射(因为我当然不想全局重新映射这些键代码)?