linux指令记录

强制安装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 或执行其他操作(如终止进程),可以结合使用其他命令,如 pskill 等。

根据PID停止应用

kill <PID>

kill <PID> 命令用于向指定的进程发送信号,以控制进程的行为。它的作用是终止或操作正在运行的进程。

在命令中,将 <PID> 替换为您要操作的进程的实际进程 ID(PID)。通过运行 pspgrep 命令可以获取要操作进程的 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更新一下配置即可。

  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zw_ggr_2017

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

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

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

打赏作者

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

抵扣说明:

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

余额充值