安装 Skype 的最新方法是使用 snap。
sudo snap install skype
重新启动后,它可以自动启动并以后台守护程序的方式运行。我们可以在设置菜单中启用或禁用它的自动启动。它在自动启动禁用时运行:
sudo snap run skype
但该命令不能作为普通守护进程在后台运行。
snap run skype &
snap run skype 2>&1
两者都不能让它在后台运行,那么如何才能在后台运行呢?
安装 Skype 的最新方法是使用 snap。
sudo snap install skype
重新启动后,它可以自动启动并以后台守护程序的方式运行。我们可以在设置菜单中启用或禁用它的自动启动。它在自动启动禁用时运行:
sudo snap run skype
但该命令不能作为普通守护进程在后台运行。
snap run skype &
snap run skype 2>&1
两者都不能让它在后台运行,那么如何才能在后台运行呢?
有一个脚本(在破折号上)在系统启动时运行(作为守护程序)。该脚本在根目录下运行。
在用户下,我创建了一个具有正确参数的文件,脚本每秒检查一次文件是否存在并读取参数。
也就是说,我通过文件将参数传递给脚本(以root身份运行)。你能给我一个更好的方法吗?
需要什么:通过用户命令(操作)以root权限执行脚本。在不提升用户权限的情况下。从文件夹(if-pre-up.d/...)运行脚本时,也许有一个选项可以提升网络接口。我正在查看 udev 并插入闪存卡,但这并不方便。
@Marcus Müller 例如,有一个文件应该在短时间内对用户可读(root:user 440)。之后权限应该变回(root:user 400)
@Marcus Müller OS Gnu/Linux (Debian)。'这听起来就像你本质上是在用户和根守护进程之间传递消息。' - 是的
@Frédéric Loyer 我喜欢管道的解决方案。@Marcus Müller 看到的错误管道行为确实发生了,但我需要每 5-30 分钟传递一个参数,所以应该不会混淆(b 之前的 a)。即我在 root 下运行的脚本将如下所示:
#!/usr/bin/dash
mkfifo fifo
while read line <fifo; do
if [ $line -eq 'arg1' ] ; then
echo 'Starting...'
fi
done
正确的?在安全方面,使用这种管道是否会恶化任何事情?
我想编写一个在启动后、登录前启动的守护程序,它通过USB-rawhid与Arduino 微控制器进行后台通信。
我想以非 root 身份运行这个守护进程。
我也想避免创建一个新用户,只是为了这个守护进程。
是否有任何系统通用用户可以(重新)用于此目的?
我在/etc/shadow
列出的用户中看到,命名daemon
但...
# su daemon
This account is currently not available.
我目前的目标是:
systemd
如果这个通用用户可以在默认的 Debian 和 Ubuntu 安装中使用,那将是一个奖励。
dotnet core
我已经为 linux arm 机器开发并发布了一个 Web 应用程序。为此,已启动命令:
dotnet publish --runtime linux-arm -p:PublishSingleFile=true
结果给出了目录:
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 10/03/2020 8:56 wwwroot
-a---- 09/03/2020 10:54 162 appsettings.Development.json
-a---- 09/03/2020 10:54 192 appsettings.json
-a---- 10/03/2020 8:56 108097487 coremonitor
-a---- 09/03/2020 12:59 7248 coremonitor.pdb
-a---- 10/03/2020 8:56 474 web.config
coremonitor
可执行文件在哪里。该数据被发送到服务器并存储在路径中/root/datalogger/linux-arm/
。然后我们创建了 systemd 守护进程来启动它:
[Unit]
Description=Data Logger Monitor Daemon
[Service]
ExecStart=./coremonitor
WorkingDirectory=/root/dataloggermonitor/linux-arm
User=dotnetuser
Group=dotnetuser
Restart=on-failure
SyslogIdentifier=DataLoggerMonitor-Service
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重新启动后,我得到以下 systemd 日志(systemctl status dataloggermonitor
):
● dataloggermonitor.service - Data Logger Monitor Daemon
Loaded: error (Reason: Invalid argument)
Active: inactive (dead)
在开始之前我想道歉——我知道这个问题之前已经被问过,我已经找到了一些线程。不幸的是,我对 Linux 非常陌生,我在试图浏览其他人的工作时迷失了方向。
我正在尝试在主机上创建虚拟机。我的主机有 RHEL7,我正在使用 RHEL6.4 制作 VM 我正在使用虚拟机管理器,并且我成功地从 ISO 引导而没有问题。到目前为止,一切都很好。
我现在正在尝试从主机建立与虚拟机的连接,但我很挣扎。我正在尝试使用 Hypervisor QEMU/KVM 添加连接,我的主机的主机名,用户名是我的用户名。最初,我收到一条失败消息,直到我安装了 openssh 和 oepnssh-askpass。现在它提示我输入密码,我输入。好的,按预期工作。
输入密码后,我收到一个弹出错误,内容为
虚拟机管理器连接失败无法连接libvirt qemu+ssh://me@myMachine
身份验证无效:没有可用于验证操作“org.libvirt.unix.manage”的 polkit 代理
验证“libvirtd”守护进程是否正在远程主机上运行。
我花了很多时间试图弄清楚这一点,我不知所措。我已经尝试更新 libvertpd.pid 文件,但是当我尝试运行 systemcl start/stop libvirt-bin 时,我收到一个警告,提示 Unit libvirt-bin.service 未加载。(老实说,我不确定应该或不应该做什么,我只是按照别人的指示,希望它最终能奏效。)
如果我尝试运行 libvirtd -d,我会收到一条错误消息:“无法获取 pidfile。请检查 /var/log/messages 或在不使用 --daemon 的情况下运行以获取更多信息。” 我已经导航到适当的文件夹并确认 libvirtd.pid 确实存在,并且在它应该挂在的地方。当我尝试检查消息部分时,没有来自今天的消息——只有 4 天前的消息。
我最好的猜测是我的 libvirtd 有问题,但我不知道是什么问题,也不知道如何诊断它。在试图找出问题/盲目遵循其他人的建议时,我安装了 firewalld、dmidecode、dnsmasq、libvirt、libvirt-python、libguestfs-tools 和 virt-install,但似乎都没有以任何方式改变问题. 我仍然遇到与以前相同的错误。
如果有人知道如何解决这个问题(并且可以握住我的手一点点导航到哪里和输入什么),我将非常感激。
我有一个用户空间守护进程,称为它maxwell
,它根据来自另一个应用程序的 D-bus 信号执行各种操作,称为它room
。我想maxwell
在用户启动后立即运行,并在退出room
时停止它。room
我认为像这样的启动器脚本会导致所需的行为:
#!/bin/sh
systemctl --user start maxwell
room
systemctl --user stop maxwell
但是有没有更好/标准的方法来做到这一点,例如通过 systemd 本身?
更新:我正在寻找的功能似乎upstart
与它的dbus event提供的功能相似。根据 Stephen Kitt 的回答,最接近的事情systemd
似乎是自动启动一个服务,该服务在第一次使用某个 D-bus 名称时“拥有”该名称;不幸的是,在这种情况下,它room
“拥有”这个名字。
注意:我不认为这和systemd requires="some non-systemd process" 是一样的吗?或者,至少,其中提供的答案在这种情况下有效。据我了解,如果该单元尚未运行,则 usingExecStartPre
只会将该maxwell
单元标记为失败。room
我编写了几个通过 Unix 域套接字(原始套接字)进行通信的守护进程,现在我想在生产服务器上为它们找到最合适的位置。哪些文件放在哪里?
这是我到目前为止所得到的(随时建议更好的位置):
/usr/sbin/<subdir>/
?/usr/bin/<subdir>/
? 别的地方?/var/run/<subdir>/
不知道为什么,但我觉得不舒服/tmp/
)/var/log/<subdir>/
/etc/<subdir>/
目标操作系统是 Ubuntu 服务器 16.04+。
在 sysvinit 中,telinit
是指向init
.
init
作为守护进程运行。是否telinit
作为守护进程运行?
我的 Lubuntu 上没有安装 sysvinit。作为比较, 它的systemctl
作用与systemd
as telinit
to相似init
,并且systemctl
有一个控制终端,因此不作为守护进程systemd
运行,而作为守护进程运行。
谢谢。