强制安装rpm包
指令如下:
rpm -Uvh *.rpm - -force - -nodeps
这个指令是用来强制安装 RPM 软件包的,其中包含了两个参数:
-Uvh
表示升级已经存在的软件包或者安装新的软件包。其中v
参数可选,表示在安装过程中显示详细信息。*.rpm
表示需要安装的 RPM 软件包文件名,*
通配符可以匹配所有的 RPM 文件。--force
参数表示忽略软件包之间的版本依赖关系,强制安装软件包,并覆盖已经安装的同名软件包。--nodeps
参数表示不检查软件包之间的依赖关系,直接安装该软件包。
总的来说,如果使用上述指令进行安装,就会强制覆盖掉原有同名的软件包,即使存在一些版本冲突或者依赖关系方面的问题也会被忽略,所以,在使用该指令时需要格外小心,确保不会造成系统的损坏或其他问题。
查找已安装的软件包
rpm -qa | grep gstreamer
这个指令的作用是在已安装的 RPM 软件包中,查找包名中包含 "gstreamer" 的软件包,并将结果输出到终端。其具体的命令行参数和含义如下:
rpm
:表示使用 RPM 包管理器。-qa
:查询系统上安装的所有 RPM 软件包。|
:管道符号,将前面的命令所产生的输出作为后面程序的输入。grep gstreamer
:根据关键词 "gstreamer" 进行过滤搜索。
因此,执行该指令会返回所有已安装的 RPM 软件包中包含 "gstreamer" 关键字的包名。通常使用这个指令来检查系统上是否已经安装了 GStreamer 多媒体框架相关的软件包,以及它们的版本信息等。
dpkg -l | grep gstreamer
这个指令的作用是在已安装的 DEB 软件包中,查找包名中包含 "gstreamer" 的软件包,并将结果输出到终端。其具体的命令行参数和含义如下:
dpkg -l
:列出当前系统上已安装的所有 DEB 软件包。|
:管道符号,将前一个命令的输出作为后一个命令的输入。grep gstreamer
:根据关键词 "gstreamer" 进行过滤搜索。
因此,执行该指令会返回所有已安装的 DEB 软件包中包含 "gstreamer" 关键字的包名和版本信息。通常使用这个指令来检查系统上是否已经安装了 GStreamer 多媒体框架相关的软件包,以及它们的版本信息等。
多网卡设置组播路由
sudo route add -host 226.0.100.101 dev ens38
这个命令的作用是在Linux系统中添加一条静态路由,将目标IP地址 226.0.100.101
的数据包通过网络接口 ens38
发送。
具体来说,该命令向IP路由表中添加了一条路由规则,指定了目标IP地址及其到达的网络接口。其中 -host
参数表示目标路由为单个主机,而不是某个网络(使用 -net
选项)。ens38
是网卡的名称,代表着一个网络接口,这里使用的是 dev(device)
参数指定它。通过这个命令,数据包会发送到名为 ens38
的网络接口,并被传递到与该接口相连的网络中,最终到达目标设备。
关闭防火墙
systemctl disable firewalld 或 chkconfig firewalld off
systemctl disable firewalld
是用来关闭和禁止 Linux 系统中自带的防火墙服务 firewalld,在关闭后,系统将不再启用或管理防火墙,从而使得计算机可以接收和发送外部请求和响应。请注意,这样做可能会导致系统面临更大的安全风险,因为未经过滤的网络请求可能会对系统造成威胁。
另一方面,chkconfig firewalld off
是在诸如 CentOS、Red Hat 等基于 SysV Init 系统的Linux发行版上关闭 firewalld 服务。它使用 chkconfig 工具将防火墙服务从运行级别中删除。同样需要注意,关闭防火墙可能增加网络攻击的风险,建议在保持有效防御的前提下才执行此操作。
系统负载监控
top -H
top
是一个在 Linux 系统中常用的命令行工具,用于实时监控系统的进程和系统负载情况。top -H
命令则是在 top
命令的基础上启用“线程”模式,以查看每个进程中所有线程的 CPU 使用情况。
-H
选项会将界面从显示进程切换为显示线程。在多线程应用程序中,一个进程可以包含多个执行线程,通过 -H
选项可以更加详细地了解每个线程的使用情况,包括线程 ID、线程使用的 CPU 时间百分比、内存使用情况等信息。
值得注意的是,top
命令本身也支持一些交互式操作,如快捷键 H 可以按线程显示或隐藏。使用 q
键可以退出 top
命令。
总之,top -H
命令可以帮助用户更详细地了解系统的进程和线程运行情况,对于定位系统性能瓶颈等问题具有重要作用。
perf安装
sudo apt-get install linux-tools-common
sudo apt-get install linux-tools-"$(uname -r)"
sudo apt-get install linux-cloud-tools-"$(uname -r)"
sudo apt-get install linux-tools-generic
sudo apt-get install linux-cloud-tools-generic
这几个命令分别是安装 Linux 性能分析工具 perf 相关的依赖包。其中:
sudo apt-get install linux-tools-common
命令是安装 Perf 工具的公共组件和基础后端库。sudo apt-get install linux-tools-"$(uname -r)"
命令根据当前内核版本安装 Perf 工具的特定内核版本的前端模块(也就是 perf 命令行工具)和符号文件,使其可以与操作系统相集成。sudo apt-get install linux-cloud-tools-"$(uname -r)"
命令是额外安装支持云环境的 Perf 工具相关的依赖包和前端模块。sudo apt-get install linux-tools-generic
命令则是安装基本范围内适用于所有桌面、服务器或虚拟机的依赖项和前端模块。sudo apt-get install linux-cloud-tools-generic
命令则是安装针对云环境的 Perf 工具的基本依赖项和前端模块。
请注意,安装这些软件包可能需要一些时间,具体取决于您的 Internet 连接速度并向您请求确认以开始下载和安装。
您可以使用以下命令来查看是否在 Ubuntu 上安装了 perf 工具:
which perf
如果 perf 被安装并可用,它将打印perf二进制文件的路径,例如: /usr/bin/perf
。
如果您打印不出任何内容,则表示您未安装perf或者环境变量并没有配置正确。您可以先按照上述回答安装perf,并确保它已经成功安装后再次尝试此命令。
perf使用
sudo perf record -g ./MyApp
sudo perf report -g graph -f
这两个命令的含义如下:
-
perf record -g ./MyApp
: 这条命令将使用 perf 工具来监视和记录可执行文件MyApp
的性能,并在执行期间收集函数调用堆栈信息。其中-g
选项指示 perf 启动时同时记录函数调用堆栈信息。这样可以更准确地确定哪些函数对程序的性能产生了影响。 -
perf report -g graph -f
: 这条命令将分析之前保存的perf.data
文件,并生成一张函数调用图以帮助您识别程序的瓶颈。其中-g graph
选项指示 perf 在输出报告中显示函数调用堆栈信息及其关系,并以图形化的形式呈现;而-f
选项则指示 perf 输出完整的函数名,而非缩写形式。
需要注意的是,这两个命令通常需要以 root 权限执行,因为 perf 工具需要对内核进行访问。在执行过程中,您可以根据自己的需要使用不同的 perf 选项和参数,以便对程序的性能进行进一步的分析和优化。例如,您还可以使用 -e
选项来指定特定的硬件事件和软件事件进行监测,或使用 -p
选项来监测一个正在运行的进程的性能。
tcpdump
tcpdump
是一个常用的网络抓包工具。它能够在命令行下捕获和解析网络数据包,可以用于网络故障排查、协议分析、安全审计等各种网络相关的任务。
常用的指令如下:
#抓取指定网络接口的所有数据包
tcpdump -i <interface>
#按照源/目标 IP 地址过滤
tcpdump -i <interface> src <source_ip>
tcpdump -i <interface> dst <destination_ip>
#按照端口号过滤
tcpdump -i <interface> port <port_number>
#指定协议类型过滤
tcpdump -i <interface> icmp
tcpdump -i <interface> udp
tcpdump -i <interface> tcp
#指定抓包时长(秒数)
tcpdump -i <interface> -c <count>
#保存抓包结果到文件
tcpdump -i <interface> -w <output_file>
#读取保存的抓包文件并显示
tcpdump -r <input_file>
上述指令中 <interface>
是指要抓包的网络接口(如 eth0),<count>
是抓包时长或要抓取的数据包数量,<source_ip>
和 <destination_ip>
是源和目标 IP 地址,<port_number>
是端口号,<output_file>
是保存抓包结果的文件名,<input_file>
是已保存的抓包文件。
请注意,使用 tcpdump
需要具备管理员或超级用户权限。另外,根据具体的需求,您可以结合不同的选项组合和过滤条件来定制适合自己的抓包指令。
valgrind安装和使用
sudo apt update
sudo apt install valgrind
valgrind --leak-check=full ./可执行文件名
Valgrind 是一个用于检测程序内存泄漏和其他内存错误的工具。当你使用命令 valgrind --leak-check=full ./可执行文件名
运行一个可执行文件时,Valgrind 将会分析该程序的内存使用情况,并检测是否存在内存泄漏。
具体而言,--leak-check=full
是 Valgrind 的一个参数,用于开启完整的内存泄漏检测。它会在程序结束时提供关于内存泄漏的详细报告。
要运行上述命令,请确保你已经在终端中进入了可执行文件所在的目录,并将 可执行文件名
替换为你要检查的实际可执行文件的名称。然后按下回车键,Valgrind 将开始分析并输出结果。
请注意,使用 Valgrind 分析大型或复杂的程序可能会消耗较多的时间和系统资源。同时,Valgrind 对程序的运行会产生一些开销,因此建议在调试或性能分析阶段使用 Valgrind,而不是在生产环境中使用。
查看端口占用
sudo netstat -tulnp | grep 9003
或者
sudo ss -tulnp | grep 9003
查看端口是否被应用程序占用,及占用程序的PID。这里的选项含义与上面提到的相同:
-t
显示TCP连接-u
显示UDP连接-l
仅显示监听中的套接字-n
显示数字形式的地址和端口号,不进行DNS解析-p
显示进程标识符和程序名称
由于你只想查看TCP或UDP的9003端口,所以-tulnp
中的-u
可能是不必要的,除非你也想查看UDP连接。如果只是查看TCP连接,可以使用-tlnp
。
kill进程
PID查看
top
ps -aux
grep 应用程序名称
pgrep
命令用于根据进程的名称或其他属性来查找正在运行的进程,并返回匹配的进程 ID (PID)。它的作用是快速定位与指定条件匹配的进程。
使用 pgrep
命令时,您可以提供要搜索的进程名称、进程的命令行参数、用户、进程所属的终端等条件,以便精确匹配正在运行的进程。
以下是 pgrep
命令的一些常见选项:
-l
:显示匹配进程的名称和对应的 PID。-f
:进行完整的命令行匹配,而不仅仅是进程名称。-u
:限制搜索指定用户下的进程。-t
:限制搜索指定终端下的进程。
请注意,pgrep
命令只返回第一个匹配的进程 PID。如果需要列出所有匹配的进程及其 PID 或执行其他操作(如终止进程),可以结合使用其他命令,如 ps
、kill
等。
根据PID停止应用
kill <PID>
kill <PID>
命令用于向指定的进程发送信号,以控制进程的行为。它的作用是终止或操作正在运行的进程。
在命令中,将 <PID>
替换为您要操作的进程的实际进程 ID(PID)。通过运行 ps
或 pgrep
命令可以获取要操作进程的 PID。
默认情况下,kill
命令会发送一个 TERM 信号(信号编号为 15)给目标进程,要求它正常退出。目标进程可以选择响应并进行清理操作,然后退出。
如果进程没有响应或无法正常退出,您可以使用 -9
选项来发送一个强制终止的 KILL 信号(信号编号为 9),以立即终止进程的执行。这个操作相当于强制杀死进程,进程将不会有机会进行任何清理操作。
请谨慎使用 kill
命令,特别是在终止重要进程时。确保您选择了正确的进程,并在必要时沟通与该进程相关的人员。
CMakeLists.txt生成.pro文件
qmake -project
qmake -project
是 qmake 工具的一个命令,用于生成一个基本的 .pro
文件。.pro
文件是用来描述 Qt 项目配置和构建规则的文件。
执行 qmake -project
命令时,qmake 会扫描当前目录下的源代码文件,并根据这些文件自动生成一个简单的 .pro
文件,包含了基本的项目信息和默认的构建规则。生成的 .pro
文件通常包含以下内容:
TEMPLATE
:指定项目类型,如应用程序 (app
) 或库 (lib
)。TARGET
:指定生成的目标文件名。SOURCES
:列出了项目中的源代码文件。HEADERS
:列出了项目中的头文件。FORMS
:列出了项目中的 Qt Designer 表单文件(如果有)。RESOURCES
:列出了项目中的资源文件。
生成的 .pro
文件只是一个初始模板,需要根据项目需求进行相应的配置和修改。你可以编辑和调整 .pro
文件,添加额外的构建规则、包含路径、库依赖等信息,以满足你的项目要求。
总结来说,qmake -project
的作用是方便创建一个基本的 .pro
文件,为 Qt 项目提供一个起点。通过对生成的 .pro
文件进行适当的修改,你可以配置项目的构建规则,并使用 qmake 来构建和管理你的 Qt 项目。
创建软链接
例如,假设您想将 /home/user/example.txt
这个文件创建一个符号链接到 /home/user/Desktop/
目录中,并且取名为 symlink.txt
。则可以运行如下命令:
ln -s /home/user/example.txt /home/user/Desktop/symlink.txt
这个指令 ln -s <源文件或目录> <目标文件或目录>
用于在Linux或Unix系统上创建符号链接。它会创建一个指向原始文件或目录的新链接,该链接被放置在目标路径上。
参数 -s
表示创建的是符号链接(symbolic link),而不是硬链接(hard link)。 和硬链接不同的是,符号链接是一种特殊文件类型,它可以跨越不同的文件系统和存储设备,指向任何一个目标。
然后在 /home/user/Desktop/
目录下就会出现一个 symlink.txt
符号链接,它指向 /home/user/example.txt
文件。可以使用这个符号链接来访问原始文件内容,像访问原文件一样进行操作。
添加环境变量
#打开.bashrc文件
sudo gedit ~/.bashrc
#在文件中添加
export PATH="/usr/local/ffmpeg/bin:$PATH"
#使修改生效
source ~/.bashrc
提醒:修改完.bashrc文件后要保存修改;最后别忘了执行source指令使本次修改生效。
添加动态库路径
Qt中运行软件找不到动态库:StationMonitor: error while loading shared libraries: libglog.so.1: cannot open shared object file: No such file or directory
出现这类错误表示,系统不知道xxx.so放在哪个目录下,这时候就要在/etc/ld.so.conf中加入xxx.so所在的目录。
一般而言,有很多的so会存放在/usr/local/lib这个目录底下,去这个目录底下找,果然发现自己所需要的.so文件。
所以,在/etc/ld.so.conf中加入/usr/local/lib这一行,保存之后,再运行:/sbin/ldconfig –v更新一下配置即可。