首页
统计
关于
Search
1
C语言:获取程序运行消耗的时间(gettimeofday)
564 阅读
2
QT-利用Qcamera查看USB摄像头参数(数据帧格式+分辨率)
388 阅读
3
嵌入式linux组播接收发送失败解决
371 阅读
4
CMAKE报告:COULD NOT FIND PKGCONFIG (MISSING: PKG_CONFIG_EXECUTABLE)
355 阅读
5
Linux 查看硬盘通电时间
298 阅读
编程语言
C/C++
PHP
Go
分享
随笔
Linux
OpenHarmony
登录
Search
标签搜索
C++
QT
Linux
Git
Go
C
程序执行时间
函数执行时间
GDAL
zeromq
github
Centos
代理
goKit
gitea
247.1
累计撰写
34
篇文章
累计收到
0
条评论
首页
栏目
编程语言
C/C++
PHP
Go
分享
随笔
Linux
OpenHarmony
页面
统计
关于
搜索到
15
篇与
的结果
2026-03-01
Tmux安装及核心操作
一、安装 Tmux根据你的操作系统选择对应命令:系统安装命令Ubuntu / Debiansudo apt update && sudo apt install tmuxCentOS / RHEL / Fedorasudo dnf install tmux (旧版用 yum)macOSbrew install tmuxArch Linuxsudo pacman -S tmuxopenSUSEsudo zypper install tmux安装完成后,在终端输入 tmux -V 查看版本,确认安装成功。二、核心概念会话 (Session):一个独立的工作区,可以包含多个窗口。窗口 (Window):会话里的“标签页”,每个窗口都是一个独立的终端。窗格 (Pane):窗口可以被分割成多个区域,同时显示多个终端界面。操作 Tmux 的通用模式:先按前缀键 Ctrl+b,再按命令键。三、核心操作速查表1. 会话管理操作命令(终端中)快捷键(Tmux内)新建会话tmux new -s <会话名>-查看所有会话tmux lsCtrl+b s接入/重新连接会话tmux attach -t <会话名>-分离会话(临时退出)-Ctrl+b d关闭/杀死会话tmux kill-session -t <会话名>-2. 窗口管理操作快捷键创建新窗口Ctrl+b c重命名当前窗口Ctrl+b ,切换到下一窗口Ctrl+b n切换到上一窗口Ctrl+b p切换到指定编号窗口Ctrl+b 数字 (0-9)列出窗口选择Ctrl+b w关闭当前窗口Ctrl+b & (或输入 exit)3. 窗格管理操作快捷键垂直分割(左右分屏)Ctrl+b %水平分割(上下分屏)Ctrl+b "在窗格间移动光标Ctrl+b 方向键循环切换窗格Ctrl+b o调整当前窗格大小Ctrl+b Alt+方向键 (或 Ctrl+b Ctrl+方向键 微调)最大化/还原当前窗格Ctrl+b z关闭当前窗格Ctrl+b x (或输入 exit)4. 其他常用操作快捷键/命令进入复制模式(滚动查看历史)Ctrl+b [ (用方向键滚动,按 q 退出)粘贴复制的内容Ctrl+b ]重新加载配置文件Ctrl+b : 然后输入 source-file ~/.tmux.conf四、快速入门示例启动一个新会话:tmux new -s mywork创建分屏:按 Ctrl+b % 左右分屏。按 Ctrl+b " 上下分屏。在不同窗格中执行命令(如左边编辑代码,右边运行程序)。新建一个窗口:按 Ctrl+b c,然后在新窗口中查看日志。临时退出(分离会话):按 Ctrl+b d。你会回到普通终端,但 Tmux 中的程序仍在运行。重新连接会话:tmux attach -t mywork彻底结束会话:在 Tmux 内输入 exit 或按 Ctrl+b & 关闭所有窗口。
2026年03月01日
8 阅读
0 评论
0 点赞
2025-07-17
银河麒麟上QT应用自动创建桌面快捷方式及增加自启动
银河麒麟使用的桌面为MATE桌面。#include <QCoreApplication> #include <QFile> #include <QTextStream> #include <QDir> #include <QMessageBox> #include <QStandardPaths> #include <QFileInfo> #include <QProcess> bool shortcutExists(const QString& appName) { // 获取桌面路径 QString desktopPath = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation); if (desktopPath.isEmpty()) { qDebug() << "无法获取桌面路径"; return false; } // 构建.desktop文件路径 QString desktopFileName = appName + ".desktop"; QString desktopFilePath = desktopPath + QDir::separator() + desktopFileName; // 检查文件是否存在 return QFile::exists(desktopFilePath); } bool isAutostartEnabled(const QString& appName) { // 获取自动启动目录 QString autostartDir = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + "/autostart/"; QString autostartFilePath = autostartDir + appName + ".desktop"; // 检查自动启动文件是否存在 return QFile::exists(autostartFilePath); } QString findApplicationIcon(const QString& appName, const QString& execPath) { // 获取可执行文件所在目录 QFileInfo execFileInfo(execPath); QString execDir = execFileInfo.absolutePath(); // 检查目录下是否存在logo.png QString logoPath = execDir + QDir::separator() + "logo.png"; if (QFile::exists(logoPath)) { qDebug() << "找到应用图标:" << logoPath; return logoPath; } // 尝试查找其他可能的图标文件 QStringList possibleIcons = { "icon.png", appName.toLower() + ".png", appName.toLower() + ".svg", "application-x-executable" // 默认应用图标 }; for (const QString& icon : possibleIcons) { QString iconPath = execDir + QDir::separator() + icon; if (QFile::exists(iconPath)) { qDebug() << "找到替代图标:" << iconPath; return iconPath; } } // 如果没有找到自定义图标,使用系统默认图标 qDebug() << "未找到自定义图标,使用默认图标"; return "application-x-executable"; // 系统默认应用图标 } bool createDesktopShortcut(const QString& appName, const QString& execPath, const QString& iconPath = "", const QString& comment = "", bool terminal = false, bool mateSpecific = true) { // 获取桌面路径 QString desktopPath = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation); if (desktopPath.isEmpty()) { qDebug() << "无法获取桌面路径"; return false; } // 构建.desktop文件路径 QString desktopFileName = appName + ".desktop"; QString desktopFilePath = desktopPath + QDir::separator() + desktopFileName; // 创建文件 QFile file(desktopFilePath); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { qDebug() << "无法创建文件:" << desktopFilePath; return false; } // 写入文件内容 QTextStream out(&file); out << "[Desktop Entry]\n"; out << "Version=1.0\n"; out << "Type=Application\n"; out << "Name=" << appName << "\n"; if (!comment.isEmpty()) out << "Comment=" << comment << "\n"; out << "Exec=" << execPath << "\n"; out << "Terminal=" << (terminal ? "true" : "false") << "\n"; // 使用提供的图标路径或默认图标 QString effectiveIcon = !iconPath.isEmpty() ? iconPath : "application-x-executable"; out << "Icon=" << effectiveIcon << "\n"; // MATE桌面特定配置 if (mateSpecific) { out << "X-MATE-Autostart-enabled=true\n"; out << "X-MATE-Autostart-Delay=0\n"; out << "X-MATE-Provides=panelapplet\n"; out << "Categories=GNOME;GTK;Utility;\n"; } else { out << "Categories=Application;\n"; } file.close(); // 设置文件权限为可执行 QFileInfo fileInfo(desktopFilePath); QFile::setPermissions( desktopFilePath, fileInfo.permissions() | QFileDevice::ExeUser | QFileDevice::ExeGroup | QFileDevice::ExeOther ); qDebug() << "桌面快捷方式已创建:" << desktopFilePath; // 刷新MATE桌面(可选) QProcess::startDetached("mate-panel --replace &"); return true; } bool enableAutostart(const QString& appName, const QString& execPath, const QString& iconPath = "", const QString& comment = "", bool terminal = false, bool mateSpecific = true) { // 获取自动启动目录 QString autostartDir = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + "/autostart/"; QString autostartFilePath = autostartDir + appName + ".desktop"; // 创建自动启动目录(如果不存在) QDir().mkpath(autostartDir); // 创建文件 QFile file(autostartFilePath); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { qDebug() << "无法创建自动启动文件:" << autostartFilePath; return false; } // 写入文件内容 QTextStream out(&file); out << "[Desktop Entry]\n"; out << "Version=1.0\n"; out << "Type=Application\n"; out << "Name=" << appName << "\n"; if (!comment.isEmpty()) out << "Comment=" << comment << "\n"; out << "Exec=" << execPath << "\n"; out << "Terminal=" << (terminal ? "true" : "false") << "\n"; // 使用提供的图标路径或默认图标 QString effectiveIcon = !iconPath.isEmpty() ? iconPath : "application-x-executable"; out << "Icon=" << effectiveIcon << "\n"; // 自动启动特定配置 out << "NoDisplay=true\n"; out << "Hidden=false\n"; out << "X-GNOME-Autostart-enabled=true\n"; out << "X-MATE-Autostart-enabled=true\n"; // MATE桌面特定配置 if (mateSpecific) { out << "X-MATE-Autostart-Delay=0\n"; out << "Categories=GNOME;GTK;Utility;\n"; } else { out << "Categories=Application;\n"; } file.close(); // 设置文件权限 QFileInfo fileInfo(autostartFilePath); QFile::setPermissions( autostartFilePath, fileInfo.permissions() | QFileDevice::ExeUser | QFileDevice::ExeGroup | QFileDevice::ExeOther ); qDebug() << "已启用开机自启动:" << autostartFilePath; return true; } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 获取应用信息 QString appName = QCoreApplication::applicationName(); QString execPath = QCoreApplication::applicationFilePath(); QString comment = "My Qt Application for MATE Desktop"; // 查找应用图标 QString iconPath = findApplicationIcon(appName, execPath); // 检查并创建桌面快捷方式 if (!shortcutExists(appName)) { if (createDesktopShortcut(appName, execPath, iconPath, comment, false, true)) { qDebug() << "MATE桌面快捷方式创建成功!"; } else { qDebug() << "MATE桌面快捷方式创建失败!"; return 1; } } else { qDebug() << "桌面快捷方式已存在,跳过创建"; } // 检查并启用开机自启动 if (!isAutostartEnabled(appName)) { if (enableAutostart(appName, execPath, iconPath, comment, false, true)) { qDebug() << "已成功设置开机自启动!"; } else { qDebug() << "开机自启动设置失败!"; return 1; } } else { qDebug() << "开机自启动已启用,跳过设置"; } return 0; }
2025年07月17日
30 阅读
0 评论
0 点赞
2024-09-17
error while loading shared libraries: libmpfr.so.4: cannot open shared object file
在Ubuntu22上编译QT出现这个错误error while loading shared libraries: libmpfr.so.4: cannot open shared object file加载共享库时出错:libmpfr.so.4:无法打开共享对象文件:没有这样的文件或目录解决办法:sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4
2024年09月17日
93 阅读
0 评论
0 点赞
2024-09-11
使用Git拉去项目出现server certificate verification failed. CAfile: none CRLfile: none
解决办法:临时忽略证书验证(不推荐用于生产环境)如果你只是临时测试,或者确定服务器是安全的,可以通过设置环境变量或在命令中添加参数来临时忽略证书验证。对于 Git 操作:git -c http.sslVerify=false clone <repository-url>或者设置全局配置:git config --global http.sslVerify false但这种方法存在安全风险,因为它会让你的客户端接受任何证书,包括无效或伪造的证书。安装 CA 证书确保你的系统中安装了最新的 CA 证书包。在 Ubuntu/Debian 系统上:sudo apt-get update sudo apt-get install ca-certificates在 CentOS/RHEL 系统上:sudo yum install ca-certificates
2024年09月11日
42 阅读
0 评论
0 点赞
2024-09-06
ubuntu 设置程序开机自启动 gitea
1、创建服务单元文件:打开终端,使用文本编辑器创建一个新的 systemd 服务单元文件。例如,您可以使用 nano 编辑器:sudo vim /etc/systemd/system/gitea.service2、编辑服务单元文件:在编辑器中,添加以下内容(请根据实际情况调整路径和用户):[Unit] Description=Gitea Service After=network.target [Service] Type=simple User=git Group=git WorkingDirectory=/var/lib/gitea ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini Restart=always [Install] WantedBy=multi-user.target确保 ExecStart 路径指向您安装的 Gitea 可执行文件的正确位置,WorkingDirectory 是 Gitea 安装的目录,User 和 Group 是运行 Gitea 的用户和用户组。3、保存并退出编辑器4、启用和启动服务:重新加载 systemd 配置以识别新的服务单元文件,并启动 Gitea 服务:sudo systemctl enable gitea sudo systemctl start gitea5、检查服务状态:检查 Gitea 服务的状态以确保它正在运行:sudo systemctl status gitea通过以上步骤,Gitea 将会在系统启动时自动启动。如果您需要修改 Gitea 的配置,可以编辑 /etc/gitea/app.ini 文件,并重新启动服务以应用更改。
2024年09月06日
159 阅读
0 评论
0 点赞
1
2
3