ubuntu开机自动使用screen执行执行脚本

本文介绍了screen工具如何在Linux中实现开机自动运行的脚本,包括screen的基本用法、创建screen会话、执行Python脚本、设置开机启动服务以及管理screen任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

专栏总目录

        在我们编写的脚本的实际场景中,仅使用开机自动运行,并不能满足我们所有脚本的需要。有些脚本显示开机后台运行后,并不能正常运行,所以这里我们使用screen工具,解决此类问题

一、screen工具介绍

(一)简介

        screen是一个功能强大的终端多路复用器,允许用户在单个终端窗口中运行多个终端会话,即使断开连接后,会话中的程序仍然可以继续运行。

(二)安装命令

sudo apt install screen

(三)使用命令

        在使用 screen 命令时,确保你有足够的权限来执行这些操作,特别是在创建、杀死或清理会话时。

1. 启动和退出 Screen 会话

(1)screen        启动一个新的 screen 会话。

(2)screen -S session_name        启动一个新的名为 session_name 的 screen 会话。

(3)screen -ls 或 screen -list        列出所有正在运行的 screen 会话。

(4)screen -r session_name        重新连接到名为 session_name 的 screen 会话。

(5)screen -d session_name        detach(断开)名为 session_name 的 screen 会话。

                -d参数        表示detatch,意味着在启动screen会话后,立即断开与该会话的连接,让会话在后台运行。

(6)-m参数        创建一个新会话,即使当前没有连接到任何会话。这个选项通常与-d一起使用,以便在后台启动一个新的screen会话。

(7)Ctrl+a d        在 screen 会话中,按下 Ctrl+a 后松开,然后按 d,可以 detach 当前会话。

2. 在 Screen 会话中导航

(1)Ctrl+a c        创建一个新的窗口(在 screen 会话中)。

(2)Ctrl+a n        切换到下一个窗口。

(3)Ctrl+a p        切换到上一个窗口。

(4)Ctrl+a 0-9        切换到编号为 0-9 的窗口。

(5)Ctrl+a w        显示所有窗口的列表。

3. 杀死 Screen 会话

screen -X -S session_name quit        杀死名为 session_name 的 screen 会话。

4. 其他有用的命令

(1)screen -wipe        清理已经死掉的会话。

(2)screen -S session_name -X stuff 'command^M'        在名为 session_name 的 screen 会话中执行 command^M 是 Enter 键的 ASCII 转义序列。

        请注意,^M 可以通过按下 Ctrl+v 后跟 Enter 键来输入。

二、创建test01.py测试文件

(一)创建测试文件

        借鉴之前文章的测试文件,连接在此,不多赘述:

        ubuntu22 设置开机自动运行程序_ubuntu22开机自动运行命令-优快云博客

(二)测试执行测试文件

        执行命令:

python /home/t/文档/test01.py

         如果不能执行,请检查python命令是否可以直接调用python3执行,如果不可以,参考以下连接解决:

        ubuntu中 输入python后python3不能调用-优快云博客

三、开机自动运行设置

(一)创建开机运行文件

        在“/usr/local/bin”位置,创建start_screen_test01.sh文件,用于启动screen会话并执行test01.py

sudo vi /usr/local/bin/start_screen_test01.sh

         添加如下内容:

#!/bin/bash

# 定义screen会话名称
SESSION_NAME="test01_screen"

# 检查会话是否已经存在
if screen -list | grep -q "$SESSION_NAME"; then
    echo "Screen session already exists."
else
    # 创建新的screen会话并运行test01.py

    screen -dmS $SESSION_NAME python /path/to/test01.py
fi

         替换/path/to/test01.pytest01.py的实际路径。

(二)给脚本执行权限

sudo chmod +x /usr/local/bin/start_screen_test01.sh

(三)测试启动文件

        注意:在使用root权限下,无法运行该程序

 1. 执行程序

./usr/local/bin/start_screen_test01.sh

 2.检查

(1)查看已经开启的screen服务

screen -ls

         显示如下内容时,表示该screen成功调用python文件,建立新的screen任务完成。

         显示下面内容时,表示建立任务失败

(2)关闭该服务

        为了后面测试重新执行该任务,这里需要先关闭已经成功建立的screen任务

screen -X -S test01_screen quit

(四)创建一个systemd服务文件

sudo vi /etc/systemd/system/screen_test01.service

        该文件添加以下内容:

[Unit]
Description=Screen Session for test01.py
After=network.target

[Service]
ExecStart=/usr/local/bin/start_screen_test01.sh
User=your_username
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

        替换your_username为你的用户名。

        Restart这个选项,可以填写的参数及意义如下:

        (1)默认值,服务退出后不会重启。

        (2)on-success: 只有当服务正常退出(退出码为0),或者服务状态发生变化时才会重启。

        (3)on-failure: 只有当服务异常退出(退出码非0),或者服务状态发生变化时才会重启。

        (4)on-abnormal: 只有当服务因信号而异常终止,或者服务状态发生变化时才会重启。

        (5)on-abort: 只有当服务因收到没有捕捉到的信号而终止,或者服务状态发生变化时才会重启。

        (6)on-watchdog: 只有当服务通过看门狗超时而终止时,才会重启。

        (7)always: 无论服务因为什么原因退出,总是重启服务。

        (8)unless-stopped: 服务在启动时不会重启,但是如果服务在运行时被停止,它不会重启。      

(五)启用并启动服务

sudo systemctl start screen_test01.service
sudo systemctl enable screen_test01.service

(六)检查服务状态

sudo systemctl status screen_test01.service

### 如何在Ubuntu 24.04上设置和使用RDP远程桌面 #### 安装xrdp服务器 为了使Ubuntu 24.04能够通过RDP被访问,需要先安装`xrdp`软件包。这可以通过命令行来完成: ```bash sudo apt update && sudo apt install xrdp -y ``` 此操作会更新本地的APT缓存并下载最新的版本[^1]。 #### 配置防火墙允许RDP流量 如果启用了防火墙,则需确保它不会阻止来自客户端计算机尝试连接到运行Ubuntu系统的机器上的入站TCP端口3389的数据流。可以执行如下指令开放该端口: ```bash sudo ufw allow 3389/tcp ``` 这条命令告诉Uncomplicated Firewall (ufw),即简单易用版防火墙工具,在其规则集中加入一条新记录以接受针对指定协议和服务类型的请求。 #### 启动与启用xrdp服务 一旦成功安装好之后,应该立即启动xrdp守护进程,并将其设定为开机自启项之一: ```bash sudo systemctl start xrdp sudo systemctl enable xrdp ``` 上述两条语句分别用于激活当前实例以及注册成为系统初始化脚本的一部分,从而保证每次重启后都能自动加载这项功能。 #### 使用图形界面配置远程桌面分享 对于某些用户来说,可能更倾向于利用GUI来进行相关参数调整而非CLI方式。那么可以从应用程序菜单里挑选“Settings”选项卡下的“Sharing”,再点击左侧列表中的“Screen Sharing”。不过需要注意的是,默认情况下这里仅提供VNC作为传输层协议的选择;而对于想要采用微软自家制定的标准—也就是所谓的RDP而言,则依旧得依靠前述提到过的命令行手段加以实现[^3]。 #### 测试连接 最后一步就是验证整个过程是否顺利完成啦!可以在另一台PC上面打开Windows自带的mstsc.exe程序或者其他兼容性的第三方应用,输入目标主机IP地址即可建立安全可靠的交互式会话了[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静候光阴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值