“权限被拒绝”在启动时运行命令

时间:2017-07-01 12:06:48

标签: linux bash shell startup dvblast

我的Ubuntu系统上有一个 dvb卡并编写了一个bash文件,在gnome-terminal中显示dvb tuner并在启动时将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-app存储库的命令,显示Linux中的dvb调谐器列表,dvblast是用于直播电视的节目。

当我在服务器上有1张dvb卡时,一切正常...当我向服务器添加第二张dvb卡并重新启动系统时,bash文件启动但是看到以下运行dvblast的错误:

For dvblast

这适用于lsdvb

For 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文件需要特殊权限时会发生什么?

1 个答案:

答案 0 :(得分:2)

您可以在命令前添加ie strace并将输出重定向到文件以查看确切发生的情况。 您也可以设置auditd来监控/dev/dvb/adapter3/frontend0,因此会在/var/log/messages中看到详细信息。

auditctl -w /dev/dvb/adapter3/frontend0