老周有AI

计算机视觉与人工智能技术分享

问题:

Get more security updates through Ubuntu Pro with 'esm-apps' enabled:
  vlc-plugin-qt libvlc5 vlc-data libvlccore9 vlc vlc-bin vlc-l10n
  libopenexr-dev libopenexr25 libpostproc55 vlc-plugin-samba libswscale-dev
  libavcodec58 vlc-plugin-notify libavutil56 libswscale5
  vlc-plugin-access-extra libavutil-dev vlc-plugin-skins2
  vlc-plugin-video-splitter libswresample3 vlc-plugin-video-output
  libavformat58 libavformat-dev libavcodec-dev libvlc-bin libswresample-dev
  vlc-plugin-base vlc-plugin-visualization
Learn more about Ubuntu Pro at https://ubuntu.com/pro
The following packages have been kept back:
  gjs initramfs-tools initramfs-tools-bin initramfs-tools-core libgjs0g

解决方法-去掉这些提示

cd /etc/apt/apt.conf.d/
sudo mkdir -p /etc/apt/backup
sudo mv 20apt-esm-hook.conf /etc/apt/backup/
sudo apt update
sudo apt upgrade

【参考】

Enable Ubuntu Pro to get 5 Years More Security Updates in Ubuntu 22.04,20.04,18.04

VS Code 无法输入中文

系统环境: Ubuntu 22.04 LTS

VS Code 早期安装的时候用的是 Ubuntu Software 方式进行安装的。编辑器里无法输入中文(搜狗输入法无法使用);一开始还以为是输入法没安装好。后来才知道主要原因是软件市场里的 Code 是阉割版,无法添加中文。

参考 解决Visual Studio Code无法输入中文问题

【解决办法】

  1. 卸载 Code
sudo snap remove code
  1. 重新安装
wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"

sudo apt install code

sudo apt update

sudo apt upgrade

【参考】

解决Visual Studio Code无法输入中文问题

之前一直用的 samba 连接的 群晖 NAS,不知道升级完后突然出现了状况,连接不上群晖了。找资料说用 mount 挂载有更多的好处。

安装cifs-utils

sudo apt install cifs-utils

新建挂载目录

cd /mnt
sudo mkdir nas

执行挂载

sudo mount -t cifs -o uid=***,username=***,password=***,iocharset=utf8 nas地址 本地地址

uid: 最关键,可以指定所有者,解决只能 root 权限的问题,这里为 Ubuntu用户名
username: 在 nas 上的用户名
password: nas上用户名对应的密码,可以不写,回车后会有密码输入行
iocharset: 路径中如有中文则添加此项,支持中文路径
nas地址: 如 //192.168.0.1/share
本地地址: 如 /mnt/nas

开机自动挂载

sudo vim /etc/fstab

最后一行添加

nas地址 本地地址 cifs uid=***,username=***,password=***,iocharset=utf8 0 0

重启电脑测试一下。

【参考】

Ubuntu中挂载使用nas服务器

使用 crontab 制定定时任务

目标

  1. 每分钟清理当前分钟之前的图片。 [可选]
  2. 每小时清理当前小时之前的图片。 [可选]
  3. 每天清理当前日期之前的图片。 [可选]

环境

  • 操作系统:Ubuntu 22.04 (jetson)
  • 需要清理的文件夹:/home/nvidia/install/Snapshot

步骤

1. 编写清理脚本

  1. 创建清理脚本

    sudo gedit /home/nvidia/install/cleanup_images.sh
    
  2. 编辑脚本,输入以下内容:(可选就是选择其中一个,不需要的注释起来)

    #!/bin/bash
    
    # 设置日志文件路径
    LOG_FILE="/home/nvidia/install/cleanup_images.log"
    
    # 获取当前日期和时间
    CURRENT_DATE=$(date +%Y-%m-%d)
    CURRENT_HOUR=$(date +%H)
    CURRENT_MINUTE=$(date +%M)
    
    # 每分钟清理当前分钟之前的图片 [可选]
    find /home/nvidia/install/Snapshot -type f -name "*.jpg" -mmin +1 -exec rm -f {} \;
    echo "$(date): Cleaned up images older than $CURRENT_DATE $CURRENT_HOUR:$CURRENT_MINUTE (minute)" >> $LOG_FILE
    
    # 每小时清理当前小时之前的图片 [可选]
    find /home/nvidia/install/Snapshot -type f -name "*.jpg" -mmin +60 -exec rm -f {} \;
    echo "$(date): Cleaned up images older than $CURRENT_DATE $CURRENT_HOUR:00 (hour)" >> $LOG_FILE
    
    # 每天清理当前日期之前的图片  [可选]
    find /home/nvidia/install/Snapshot -type f -name "*.jpg" -mtime +1 -exec rm -f {} \;
    echo "$(date): Cleaned up images older than $CURRENT_DATE 00:00 (day)" >> $LOG_FILE
    
  3. 保存并关闭编辑器

  4. 使脚本可执行

    sudo chmod +x /home/nvidia/install/cleanup_images.sh
    

2. 编辑 crontab 文件

  1. 使用 vim 编辑 crontab 文件

    EDITOR=vim crontab -e
    
  2. 添加多种清理任务: (可选就是选择其中一个,不需要的注释起来)

    # 每分钟清理当前分钟之前的图片  [可选]
    * * * * * /home/nvidia/install/cleanup_images.sh
    
    # 每小时清理当前小时之前的图片  [可选]
    0 * * * * /home/nvidia/install/cleanup_images.sh
    
    # 每天清理当前日期之前的图片   [可选]
    0 0 * * * /home/nvidia/install/cleanup_images.sh
    
  3. 保存并退出

    • Esc 键进入命令模式。
    • 输入 :wq 保存并退出。

3. 验证 cron 任务

  1. 检查 cron 任务是否已添加

    crontab -l
    

    你应该能看到类似以下的输出:

    * * * * * /home/nvidia/install/cleanup_images.sh
    0 * * * * /home/nvidia/install/cleanup_images.sh
    0 0 * * * /home/nvidia/install/cleanup_images.sh
    
  2. 检查 cron 日志,确保定时任务已成功执行:

    sudo tail -f /home/nvidia/install/cleanup_images.log
    

    预期输出

    • 你应该能看到 cron 任务的执行日志。
  3. 检查清理日志,确保脚本已成功执行:

    cat /home/nvidia/install/cleanup_images.log
    

    预期输出

    • 你应该能看到类似以下的记录:
      2024-11-19 15:01:00: Cleaned up images older than 2024-11-19 15:00 (minute)
      2024-11-19 15:00:00: Cleaned up images older than 2024-11-19 14:00 (hour)
      2024-11-19 00:00:00: Cleaned up images older than 2024-11-18 00:00 (day)
      

https://www.sysgeek.cn/install-ubuntu-22-04-lts/#:~:text=如何安装 Ubuntu 22.04 LTS 桌面版,详细步骤 1 安装 Ubuntu,22.04 LTS 6 步骤5:完成 Ubuntu 22.04 LTS 安装

环境配置

https://blog.csdn.net/Cris_Hu/article/details/124711093

sudo gedit /etc/apt/sources.list

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
 
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

sudo apt update
 
sudo apt upgrade
  1. 及时替换python 的pip源
cd ~
mkdir .pip
sudo gedit ~/.pip/pip.conf

在文本输入下面内容,并保存:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/ 
[install]
trusted-host = pypi.tuna.tsinghua.edu.cn

问题: cudnn GPG error

Reading package lists... Done                                                                                                                                  
W: GPG error: file:/var/cudnn-local-repo-ubuntu2204-8.8.0.121  InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 91B24998B66125A0
E: The repository 'file:/var/cudnn-local-repo-ubuntu2204-8.8.0.121  InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

解决方案

找到 /var 目录下对应的 cudnn* 文件夹,然后执行如下命令

sudo cp /var/cudnn-local-repo-ubuntu2204-8.8.0.121/*.gpg /usr/share/keyrings/
sudo apt update
sudo apt upgrade

【参考】

W: GPG error: cudnn GPG key 错误

Ubuntu 22.04 LTS 或者其他 Linux 系统下安装了 WPS 软件,每次打开,总是提示缺少字体 Symbol, Wingdings, ....

参考链接

  1. 下载字体

wps_symbol_fonts.zip 提取码: 8888

  1. 解压缩到指定目录
sudo cp *.ttf  *.TTF /usr/share/fonts
  1. 生成字体索引
sudo mkfontscale
sudo mkfontdir
  1. 更新字体缓存。
sudo fc-cache
  1. 重启 WPS

ubuntu 22.04 多张图片合成视频,多个视频合成一个大视频

环境: ubuntu 22.04 LTS
工具: ffmpeg

ffmpeg 多张图片合成视频

ubuntu 下全选目录下的所有文件,右键 rename, 选择 1,2,3,4 即可;当然也可以使用其他命名方式;

在图片文件夹当前路径下,打开终端(Terminal),输入以下命令并执行

ffmpeg -f image2 -i %d.jpg video.mp4

ffmpeg 多个视频合成一个视频

新建一个视频文件列表 allvediolist.txt

文件列表内容如下:

file '/home/xx/videolist/1.mp4'
file '/home/xx/videolist/2.mp4'
file '/home/xx/videolist/3.mp4'
file '/home/xx/videolist/4.mp4'

在当前文件夹下,打开终端(Terminal),输入以下命令,完成视频合成任务

ffmpeg -f concat -safe 0 -i allvediolist.txt -c copy output.mp4

【参考】

ubuntu下ffmpeg图片转视频
Ubuntu ffmpeg 多个视频合成 命令

系统环境: ubuntu 22.04 LTS,
vs code
远程连接其他电脑或设备进行编程。
vscode加载web 视图,报错:“Error: Could not register serviceworkers: InvalidstateError: Failed to ....

解决办法:

  1. 关闭 VS Code;
  2. 在终端执行 code --no-sandbox
  3. VS Code 会重启并可以正常渲染显示远程的 图片markdown 文件。

参考:

https://blog.csdn.net/m0_58724783/article/details/127879777

useApplication 重启程序(保持一直运行状态)

目标

确保 useApplication 在意外停止后能够自动重启,提高服务的可用性和稳定性。

环境

  • 操作系统:Ubuntu 22.04 (jetson)
  • 应用程序:useApplication
  • 安装路径:/home/nvidia/install/APP

步骤

1. 创建 systemd 服务文件

  1. 打开终端

  2. 创建服务文件

    sudo gedit /etc/systemd/system/useapp.service
    
  3. 编辑服务文件,输入以下内容:

    [Unit]
    Description=UserAPP Service
    After=network.target
    
    [Service]
    User=nvidia
    WorkingDirectory=/home/nvidia/install/APP
    Environment=LD_LIBRARY_PATH=/home/nvidia/install/APP:$LD_LIBRARY_PATH
    ExecStart=/home/nvidia/install/APP/useApplication
    Restart=always # 设置服务在任何情况下都重新启动
    RestartSec=5s
    
    [Install]
    WantedBy=multi-user.target
    

    解释

    • [Unit]:服务的基本信息。
      • Description:服务的描述。
      • After:确保服务在网络服务启动之后再启动。
    • [Service]:服务的具体配置。
      • User:运行服务的用户。
      • WorkingDirectory:服务的工作目录。
      • Environment:设置环境变量 LD_LIBRARY_PATH
      • ExecStart:启动服务的命令。
      • Restart:设置服务在任何情况下都重新启动。
      • RestartSec:服务重启前的等待时间(秒)。
    • [Install]:安装配置。
      • WantedBy:服务在多用户模式下启动。
  4. 保存并关闭编辑器(按 Ctrl+X,然后按 Y,最后按 Enter)。

2. 重新加载 systemd 配置

  1. 重新加载 systemd 配置
    sudo systemctl daemon-reload
    

3. 启用并启动服务

  1. 启用服务(确保服务在系统启动时自动启动):

    sudo systemctl enable useapp.service
    
  2. 启动服务

    sudo systemctl start useapp.service
    

4. 检查服务状态

  1. 检查服务状态

    sudo systemctl status useapp.service
    

    预期输出

    • 服务应显示为 active (running)
    • 如果服务未启动,查看错误信息并进行相应调整。

5. 查看日志

  1. 查看 systemd 日志,以了解服务启动和重启的详细信息:

    sudo journalctl -u useapp.service --since "10 minutes ago"
    

    解释

    • --since "10 minutes ago":只显示最近10分钟的日志。
    • 查看日志中的错误信息,以确定服务启动失败的原因。

6. 手动测试

  1. 手动终止 useApplication 进程

    sudo kill $(pgrep useApplication)
    
  2. 等待几秒钟,然后检查进程是否重新启动:

    ps -aux | grep useApplication
    

    预期输出

    • 应能看到 useApplication 进程重新启动。
0%