树莓派4基于Debian GNU/Linux 12 (Bookworm)设置程序开机自启动

以下是在树莓派 4 基于 Debian GNU/Linux 12 (Bookworm) 系统中,将 /home/admin/pyy_project/0x03/build/ 目录下的 0x01 软件设置为开机自启动,并在系统启动后等待 5 秒再启动该程序的步骤:

1. 创建 systemd 服务单元文件

  • 使用文本编辑器(如 nano)创建一个新的 systemd 服务单元文件 /etc/systemd/system/0x01.service:

    sudo nano /etc/systemd/system/0x01.service
    
  • 在打开的文件中添加以下内容:

    [Unit]
    Description=0x01 SoftWare Service
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    ExecStartPre=/bin/sleep 5
    ExecStart=/home/admin/DC_project/project_ver2.0/build/ServerApp
    User=root
    Group=root
    Restart=on-failure
    Environment="LD_LIBRARY_PATH=/usr/local/lib:/usr/lib"
    WorkingDirectory=/home/admin/DC_project/
    
    [Install]
    WantedBy=multi-user.target
    

注意:这里要设置工作目录WorkingDirectory=/home/admin/pyy_project/0x03/build,不然程序会加载不了/home/admin/pyy_project/0x03/build中的一些文件,导致程序功能丢失

  • 将 /home/admin/pyy_project/0x03/build/0x01 替换为你的程序的实际路径,User 和 Group 可根据程序运行所需的用户和组进行修改,如果程序可以由普通用户运行,使用当前登录的用户(如 admin)即可。
  • 按ctrl+x保存,再按回车退出

2. 重载systemd配置并启动服务

  • 保存并关闭文件后,运行以下命令使 systemd 重新加载配置,使新的服务单元生效:

    sudo systemctl daemon-reload
    
    sudo systemctl enable 0x01.service
    
  • 若要禁用一个服务,则使用以下指令:

    sudo systemctl disable 0x01.service
    

3. 可以手动启动服务验证

  • 手动启动 0x01 软件对应的服务:

    sudo systemctl start 0x01.service
    
  • 验证服务是否正常运行

    sudo systemctl start 0x01.service
    

4. 给树莓派重新上电

树莓派重新上电后,系统会自动启用0x01.service服务,使用top指令来查看对应的程序是否已经运行。

查看服务运行的日志:

# 50 代表要查看日志的行数
journalctl -u 0x01.service -n 50
# 查看服务的全部日志
sudo journalctl -u my_service

# 实时跟踪日志(类似tail -f)
sudo journalctl -u my_service -f

# 查看最近100行
sudo journalctl -u my_service -n 100

# 按时间筛选(例如最近1小时)
sudo journalctl -u my_service --since "1 hour ago"

# 结合时间范围和日志级别筛选
sudo journalctl -u my_service -p err --since today

5. 说明

  • [Unit] 部分:
    • Description 用于描述该服务的名称,可自行修改,便于识别服务。
    • After=network.target 表示该服务将在网络服务启动之后启动。
  • [Service] 部分:
    • ExecStartPre=/bin/sleep 5:在启动程序之前,使用 /bin/sleep 10 命令让系统等待 5 秒。
    • ExecStart 是最重要的部分,指定了要启动的程序的完整路径。
    • Restart=on-failure 表示当服务出现错误而退出时会尝试重新启动服务,可根据需要调整为 always (总是重启)或 no (不重启)等。
    • User 和 Group 分别指定了运行该服务的用户和组,确保程序以指定用户或组的权限运行,避免使用 root 权限带来的安全风险。
  • [Install] 部分:
    • WantedBy=multi-user.target 表示该服务将在多用户模式下启动,即系统正常启动并进入多用户命令行或图形界面时会启动该服务。

这样,程序 /home/admin/pyy_project/0x03/build/0x01 将会在系统开机并等待 5 秒后自动启动,且以 root用户的权限运行.
请注意,使用 ExecStartPre=/bin/sleep 5 只是一种简单的实现方式,如果你需要更精确的时间控制或复杂的启动条件,可以考虑使用 systemd 的定时器功能或编写一个启动脚本,在脚本中添加等待逻辑。

<think>嗯,用户现在问的是关于“Debian GNU/Linux 12 \n \l”这串代码是什么意思。之前用户已经询问过如何在终端查看Debian版本,而我给出了几种方法,其中提到`/etc/issue`文件的内容可能显示类似这样的字符串。现在用户可能在使用`cat /etc/issue`时看到了这个输出,对里面的`\n`和`\l`感到困惑,想知道它们的含义。 首先,我需要确定用户的问题点在哪里。用户可能对`\n \l`这两个转义符不理解,或者认为这是某种代码错误。需要解释这些转义符的作用,以及它们在`/etc/issue`文件中的用途。可能用户还不太了解登录界面信息的显示机制,所以需要简要说明这个文件的作用。 接下来,我应该回顾一下`/etc/issue`文件的相关知识。这个文件通常包含系统登录前显示的信息,其中的转义符会被getty程序解析,用来显示动态信息,比如主机名、终端编号等。`\n`代表节点名称(即主机名),`\l`代表当前终端编号。用户可能看到的是文件中的原始转义符,而不是被解析后的实际内容,所以需要说明这些符号在显示时的替换过程。 然后,我需要考虑用户可能的实际需求。用户可能不仅想知道这些符号的意义,还可能想自定义登录信息,或者解决显示问题。例如,如果用户看到的是未经解析的`\n`和`\l`,可能需要检查他们查看文件的方式是否正确,或者是否在登录界面正确显示。此外,用户可能有兴趣了解如何修改这个文件来个性化登录提示。 另外,要注意用户可能存在的误解,比如将这里的转义符与编程语言中的转义符混淆。需要指出这些是特定于`/etc/issue`文件的转义序列,不同于常见的换行符`\n`。同时,可能需要提醒用户,直接修改系统文件时要小心,避免导致登录问题。 最后,整理回答结构,先解释字符串中的各个部分,再详细说明转义符的含义,可能的显示效果,以及相关的注意事项。确保回答清晰,逐步引导用户理解每个部分的作用,并提供示例帮助用户直观了解。</think>在Debian系统中,`Debian GNU/Linux 12 \n \l` 这串代码实际是 `/etc/issue` 文件中的默认登录提示模板,其中 `\n` 和 `\l` 是特殊转义符。以下是详细解析: --- ### **1. 字符串分解** - **`Debian GNU/Linux 12`** 表示系统名称和主版本号(本例为Debian 12 "Bookworm")。 - **`\n`** 转义符:代表系统**节点名称**(即主机名,通过 `hostname` 命令可查看)。 - **`\l`** 转义符:代表当前连接的**终端编号**(如 `tty1`, `pts/0` 等)。 --- ### **2. 实际显示效果** 当用户登录系统时,`/etc/issue` 文件内容会被动态解析。例如: - 若主机名为 `my-server`,终端为 `tty1`,则显示: ```text Debian GNU/Linux 12 my-server tty1 ``` --- ### **3. 常见转义符对照表** | 转义符 | 含义 | 示例输出 | |--------|------------------------|-------------------| | `\n` | 节点名称(主机名) | `my-pc` | | `\l` | 当前终端设备名 | `ttyS0`, `pts/0` | | `\m` | 系统架构 | `x86_64`, `armv7` | | `\r` | 操作系统发行版版本号 | `12` | | `\s` | 操作系统名称 | `Linux` | | `\v` | 内核版本 | `6.1.0-21-amd64` | --- ### **4. 验证与操作** - **查看原始文件内容**: ```bash cat /etc/issue ``` - **观察登录界面效果**: 直接通过物理终端或SSH登录时会看到解析后的实际内容。 --- ### **5. 自定义登录提示** 可通过修改 `/etc/issue` 文件自定义登录信息(需`root`权限): ```bash sudo nano /etc/issue ``` 例如修改为: ```text Welcome to \n (\s \m) | Kernel \v ``` 登录时会显示: ```text Welcome to my-server (Linux x86_64) | Kernel 6.1.0-21-amd64 ``` --- ### **注意事项** - 转义符仅在登录提示时解析,直接查看文件会显示原始符号。 - 避免删除默认转义符(如`\n`),否则可能丢失动态信息显示功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值