我的Ubuntu系统上有一个dvb卡,并编写了一个bash文件,在gnome-terminal
中显示dvb调谐器,并在用户登录到系统时启动bash文件以运行脚本,如下所示:
#!/bin/bash
# Bash script to show list of bvb tuner
gnome-terminal --title="list of bvb tuners" -x bash -c "lsdvb; read line" &
gnome-terminal --title="Tuner 4:" -x bash -c "dvblast -a 4 -f 12596000 -s 27500000 -v 13 -c Tuner4.cfg -i 1 ; read line" &
lsdvb是来自dvb应用程序库的命令,它在Linux和dvblast中显示dvb调谐器列表,它是一个用于直播电视的节目。
当我在服务器上有1张dvb卡时一切正常.当我向服务器添加第二个dvb卡并重新启动系统时,bash文件将启动,但运行dvblast
时请参见下面的错误
对于lsdvb
来说
如果在gnome-terminal
中使用sudo -s
登录并手动运行bash文件,那么它可以正常工作。
当移除第二张卡时,bash文件在启动时工作良好。
我将strace
放在命令行中,并查看lsdvb
的日志
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
lsdvb: Simple utility to list PCI/PCIe DVB devices
Version: 0.0.4
Copyright (C) Manu Abraham
+++ exited with 0 +++
这是dvblast
的日志
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
DVBlast 2.2 (release)
warning: restarting
open("/usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache", O_RDONLY) = 3
open("/usr/lib/x86_64-linux-gnu/gconv/ISO8859-1.so", O_RDONLY|O_CLOEXEC) = 3
debug: using linux-dvb API version 5
open("/dev/dvb/adapter3/frontend0", O_RDWR|O_NONBLOCK) = -1 ENOENT (No such file or directory)
error: opening device /dev/dvb/adapter3/frontend0 failed (No such file or directory)
+++ exited with 1 +++
有人知道当第二张卡添加到服务器时,bash文件需要特殊权限时发生了什么吗?
发布于 2017-07-13 05:34:30
您可以在命令前面添加即strace
,并将输出重定向到文件,以查看到底发生了什么。您还可以将auditd
设置为监视/dev/dvb/adapter3/frontend0
,因此将在/var/log/messages
中查看详细信息。
auditctl -w /dev/dvb/adapter3/frontend0
https://stackoverflow.com/questions/44860737
复制相似问题