我有一个启动我的应用程序的脚本
./run_se
并且运行正常。但我想在系统启动时启动它,因此在 after.boot 中,我有
su artisan -c "/home/artisan/run_se"
但这是错误的,alsa 声称
ALSA lib pcm_hw.c:1693:(_snd_pcm_hw_open) Invalid value for card
当我尝试打开输出设备时。我在脚本中显示了用户和组,它们与预期一致(artisan/user)。从 su 启动的这个作业与以用户 artisan 身份启动的相同作业有何不同,为什么 alsa 不喜欢它,以及如何让 alsa 在启动时运行?(我还尝试在 su 命令中添加 -l)
openSUSE 13.2,由 Suse Studio、JeOS 创建的系统
编辑:情况越来越奇怪了。如果我以 root 身份 ssh 到该框,我可以运行该程序而不会出错。但是,如果我按 Alt-F3 并以 root 身份登录,程序就会出错。如果我以 artisan 身份登录,然后 su 到 root,程序就不会出错。
我怀疑是 systemd (它已经咬了我一次),但是我通过阅读、谷歌搜索和 grepping 还没有找到确凿的证据。
答案1
事实证明,这只是我的一个愚蠢错误和一个持续不断的谜团的结合。
愚蠢的错误是,我没有将 artisan 作为音频组的成员。但我感到困惑的是...
谜团在于,为什么从终端窗口运行程序的行为与从 ssh 运行程序的行为不同。为什么当运行该程序的用户是 root 时,运行该程序会导致错误。我仍然不明白这一点,但我会忽略它,因为我现在可以继续了。