systemctl list-units --type=service——我用了这条指令,找不到我开机自启动的那个程序的名字,是什么原因呢,还是我需要把我的开机自启动的那个程序设置一些什么吗
时间: 2024-04-09 16:27:30 浏览: 232
如果你使用 `systemctl list-units --type=service` 命令找不到你开机自启动的程序的名称,可能有几个原因:
1. 你的程序可能不是以服务的形式来运行的。树莓派上的开机自启动通常是通过创建一个 systemd 服务单元来实现的。如果你的程序没有相应的服务单元,它可能不会在 `systemctl list-units --type=service` 的列表中显示。
2. 你可能没有使用正确的命令或参数来列出服务。请确保在命令中使用了正确的参数 `--type=service`。
如果你确定你的程序是以服务的方式运行的,但它没有出现在列表中,你可以尝试以下步骤:
1. 确保你的程序有一个对应的 systemd 服务单元配置文件。这个文件通常存储在 `/etc/systemd/system/` 目录下,以 `.service` 为后缀。你可以检查该目录下是否存在对应的服务配置文件。
2. 如果你没有找到对应的服务配置文件,你需要创建一个。可以参考 systemd 的文档和示例来创建一个适合你的程序的服务配置文件。
3. 创建完服务配置文件后,使用 `systemctl enable <service>` 命令来启用该服务,使其成为开机自启动的程序。确保将 `<service>` 替换为你实际的服务名称。
通过以上步骤,你应该能够找到并设置你的开机自启动程序。如果仍然遇到问题,请提供更多的细节,以便我能够更好地帮助你。
相关问题
如何删除systemctl list-units中的服务
要删除systemctl list-units中的服务,需要执行以下步骤:
1. 确定要删除的服务名称,可以使用`systemctl list-units`命令查看所有已加载的服务。
2. 停止该服务,可以使用`systemctl stop <service_name>`命令停止服务。
3. 禁用该服务,可以使用`systemctl disable <service_name>`命令禁用服务,这将防止在系统启动时自动启动该服务。
4. 删除该服务,可以使用`rm`命令从`/etc/systemd/system`目录中删除服务文件。
5. 重载systemd管理器配置,可以使用`systemctl daemon-reload`命令重载配置文件。
需要注意的是,删除服务可能会影响系统的正常运行,请谨慎操作。
程序buffer.c代码如下: #include<stdio.h> #include<unistd.h> #include<stdlib.h> int main() { int i=0; setvbuf(stdout,NULL,_IONBF,0); while(i++<100){ fprintf(stdout,"\n202006591141.Wang Tengteng"); sleep(2); } return 0; } [1] 编译并执行该程序,并将程序的二进制可执行文件复制到一级目录/opt中 [2] 参考下列代码,创建systemd服务单元buffer.service [unit] Description=system service unit test [Service] ExecStart=/opt/buffer ExecStop=kill $(MAINPID) StandardOutput=append:/var/log/buffer.log [Install] WantedBy=multi-user.target [3] 将单元文件复制到正确的目录中,启动并查看服务的状态。 (提示:给出命令systemctl status、systemctl list-units执行结果中,该服务的状态) [4] 将服务单元设置为开机启动单元。 (提示:要求给出systemctl list-unit-files执行结果中,该服务的状态) [5] 关闭该服务后,将该服务相关的文件从系统中删除 分别使用计划任务管理命令crontab和at调度执行上述程序。 (提示:使用命令crontab -l和命令atq的查询结果验证命令设置的结果)
请注意,本AI只能回答问题,无法执行命令。以下是对您的问题的回答:
1. 将代码保存为buffer.c文件,使用gcc编译生成可执行文件buffer:`gcc buffer.c -o buffer`
然后将可执行文件复制到/opt目录:`sudo cp buffer /opt`
2. 创建systemd服务单元buffer.service文件,将以下内容复制到文件中:
```
[Unit]
Description=system service unit test
[Service]
ExecStart=/opt/buffer
ExecStop=kill $(MAINPID)
StandardOutput=append:/var/log/buffer.log
[Install]
WantedBy=multi-user.target
```
3. 将单元文件复制到正确的目录中:`sudo cp buffer.service /etc/systemd/system/`
启动服务:`sudo systemctl start buffer`
查看服务状态:`sudo systemctl status buffer`
4. 设置服务单元为开机启动单元:`sudo systemctl enable buffer`
查看服务状态:`sudo systemctl list-unit-files | grep buffer`
5. 关闭服务:`sudo systemctl stop buffer`
从系统中删除服务相关的文件:`sudo rm /etc/systemd/system/buffer.service /opt/buffer /var/log/buffer.log`
使用crontab管理命令调度执行上述程序:
```
# 编辑定时任务
crontab -e
# 添加以下内容,每隔2分钟执行一次buffer程序
*/2 * * * * /opt/buffer >> /var/log/buffer.log 2>&1
```
使用at管理命令调度执行上述程序:
```
# 执行一次buffer程序
echo "/opt/buffer >> /var/log/buffer.log 2>&1" | at now + 1 minute
```
验证命令设置的结果:
```
# 查看定时任务
crontab -l
# 查看at任务
atq
```
阅读全文