我正在寻找创建服务以在启动时运行 psensor-server 的能力,并且如果可能的话能够使用 systemctl 重新启动它?
答案1
我曾尝试找一个地方发布关于此问题的教程,但 wiki 无法加载以便我添加页面,而且我真的不知道它会放在哪里。但我为此写了一个教程,虽然我绝不是专家,但这就是我如何在我的服务器上让它工作,而不必每次都打开终端并执行启动命令。如果有人能想到一个更好的地方来放置它,或者知道它应该放在哪里,请告诉我...
我知道有些人说不需要 ppa,如果你愿意的话可以跳过这一步,因为它已经在 universe 存储库中了,但是添加 PPA 将保证你在 psensor 团队推送时收到最新的稳定更新。
本指南将向您展示如何在 ubuntu 16.04 服务器上安装 Psensor-Server,然后创建一个服务以在系统启动时在给定端口上启动它
我们需要做的第一件事就是确保系统软件包是最新的,虽然不确定这是否重要,但这始终是个好的做法。
sudo apt update
sudo apt upgrade
接下来是安装 Psensor 的先决条件
sudo apt install lm-sensors
开始检测硬件传感器
sudo sensors-detect
它会询问一系列问题,除非你知道你需要什么,否则对所有问题都回答是。
通过运行以下命令验证其是否正常工作:
sensors
输出看起来应该像这样,但请注意,您的输出将根据您电脑中的传感器数量而有所不同,因此您的读数不会准确。
coretemp-isa-0000
适配器:ISA 适配器
核心 0:+46.0C(最高 = +76.0C,临界 = +100.0C)
coretemp-isa-0001
适配器:ISA 适配器
核心 1:+44.0C(最高 = +76.0C,临界 = +100.0C)
之后我们将安装 psensor 和 psensor-server。我们将使用存储库来确保我们拥有最新的稳定版本。如果您的机器上还没有 add-apt 的先决条件,请安装它们。
sudo apt install software-properties-common python-software-properties
下一步是添加存储库
sudo add-apt-repository ppa:jfi/psensor
更新存储库 sudo apt update 安装 Psensor 和 Psensor-Server
sudo apt update && sudo apt install psensor psensor-server
现在我们已经安装了 Psensor-server,我们必须编写几个脚本来启动和停止该服务。
警告,停止脚本只是简单地使用 pkill,我已经意识到这可能不是最好的选择,但就我的目的而言这不是问题,您可能需要根据您的需要调整脚本。
第一个脚本创建如下
我使用 nano,您可以使用任何您喜欢的编辑器。如果您没有 nano,您可以通过以下方式获取它。
sudo apt install nano
然后
sudo nano /home/someuser/startps.sh
用你的用户名替换someuser
当它打开时输入以下内容
#!/bin/bash
sudo psensor-server --port=8085
您可以使用任何您想要的端口,只要确保它不会与系统上已经打开的端口冲突即可。
CTRL + X 并回答“是”以保存
然后发出
sudo nano /home/someuser/stopps.sh
再次用您的用户帐户替换someuser。
输入以下内容
#!/bin/bash
sudo pkill psensor-server
CTRL + X 并回答“是”以保存。
要创建服务,请发出以下命令
sudo nano /etc/systemd/system/startps.service
输入以下内容
[Unit]
Description=psensor service
[Service]
ExecStart=/home/someuser/startps.sh
ExecStop=/home/someuser/stopps.sh
[Install]
WantedBy=multi-user.target
将路径中的 someuser 替换为您创建 .sh 脚本时使用的用户名。
按 CTRL + X 并输入 yes 保存。
然后在终端中输入以下内容
sudo chmod u+x /home/someuser/startps.sh && sudo chmod u+x /home/someuser/stopps.sh
再次记住用您的用户名替换 someuser。
现在要启动我们的服务,我们输入
sudo systemctl start startps
它应该启动并带你回到终端提示符,此时我们输入
sudo systemctl status startps
输出应如下所示
● startps.service - psensor service
Loaded: loaded (/etc/systemd/system/startps.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2018-08-10 16:42:43 CDT; 2s ago
Process: 15300 ExecStop=/home/someuser/stopps.sh (code=exited, status=203/EXEC)
Main PID: 15385 (startpf.sh)
Tasks: 4
Memory: 1.9M
CPU: 21ms
CGroup: /system.slice/startps.service
├─15385 /bin/bash /home/someuser/startpf.sh
├─15387 sudo psensor-server --port=8085
└─15388 psensor-server --port=8085
Aug 10 16:42:43 [hostname] systemd[1]: Started psensor service.
Aug 10 16:42:43 [hostname] sudo[15387]: root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/psensor-server --port=8085
Aug 10 16:42:43 [hostname] sudo[15387]: pam_unix(sudo:session): session opened for user root by (uid=0)
请注意,如果显示已禁用,它还应该告诉您该进程正在运行。
现在要启用您的服务类型
sudo systemctl enable startps
如果它返回到终端,你可以发出
sudo systemctl status startps
您现在应该可以看到这个回复。
● startps.service - psensor service
Loaded: loaded (/etc/systemd/system/startps.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2018-08-10 16:42:43 CDT; 45min ago<br>
Main PID: 15385 (startpf.sh)
CGroup: /system.slice/startps.service
├─15385 /bin/bash /home/someuser/startps/startps.sh
├─15387 sudo psensor-server --port=8085
└─15388 psensor-server --port=8085
Aug 10 16:42:43 [hostname] systemd[1]: Started psensor service.
Aug 10 16:42:43 [hostname] sudo[15387]: root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/psensor-server --port=8085
Aug 10 16:42:43 [hostname] sudo[15387]: pam_unix(sudo:session): session opened for user root by (uid=0)
您在这里要寻找的主要内容是第二行显示已启用。
如果您看到这些输出,那么让我们进入下一步,即打开防火墙以允许从我们网络内的客户端机器进行访问。
我觉得你应该知道,psensor-server 及其内置的 HTTP 服务器没有任何安全措施。因此,从本质上讲,如果你向外界开放它,则风险自负,如果黑客破坏了你的计算机,我不承担任何责任。这就是为什么我专门在本指南的下一部分中介绍了如何向一台客户端计算机开放 iptables 中的端口,你可以根据需要多次调整它。
因此,要打开客户端计算机的端口,可以使用以下命令
sudo iptables -I INPUT -p tcp -s x.x.x.x --dport 8085 -j ACCEPT
请记住 xxxx 是您想要访问 psensor-server http 页面的客户端机器的 IP。
此外,如果您在 -dport 标志后设置了不同的端口,则需要将 8085 调整为您在上述步骤中创建 startps.sh 时选择的端口。
现在你应该可以进入客户端机器并输入http://xxxx:8085其中 xxxx 是你的服务器的 IP,8085 是你在上面的步骤中创建 startps.sh 时设置的端口。
本指南参考了以下指南。这些命令经过调整,以删除 apt-get,因为 apt 现在是 ubuntu 16.04 中安装软件的默认方式
https://wpitchoune.net/psensor/
https://wpitchoune.net/psensor/README.html
http://lifeonubuntu.com/ubuntu-missing-add-apt-repository-command/
https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files
如何使用 systemd 在启动时运行单个命令?
https://www.garron.me/en/bits/iptables-open-port-for-specific-ip.html
以及 #ubuntu-server irc 频道。
我希望这能帮助那些想做我做过的事情但不知道怎么做的人。请注意,本指南显然是为像我这样对 Ubuntu 和/或终端窗口不太了解的用户准备的。如果有人有更简单的方法,请随时将其记为答案,我会在有时间时更新。