简介
- linux系统下常用技巧
linux 交换空间配置
在 Linux 系统中创建交换分区可以通过以下步骤完成:
检查当前交换空间:
1
2sudo swapon --show
free -h创建一个新的交换文件或交换分区:
创建交换文件:
- 创建交换文件:如果
1
sudo fallocate -l 2G /swapfile
fallocate
不可用,可以使用dd
:1
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
- 设置正确的权限:
1
sudo chmod 600 /swapfile
- 将文件格式化为交换空间:
1
sudo mkswap /swapfile
- 启用交换文件:
1
sudo swapon /swapfile
- 创建交换文件:
创建交换分区:
- 使用
fdisk
或其他分区工具创建一个新的分区,类型为82
(Linux swap):1
sudo fdisk /dev/sdX
- 格式化新的分区为交换空间:
1
sudo mkswap /dev/sdXn
- 启用交换分区:
1
sudo swapon /dev/sdXn
- 使用
更新
/etc/fstab
以使交换空间在系统启动时自动挂载:- 如果使用交换文件,添加以下行到
/etc/fstab
:1
/swapfile none swap sw 0 0
- 如果使用交换分区,添加以下行到
/etc/fstab
:1
/dev/sdXn none swap sw 0 0
- 如果使用交换文件,添加以下行到
验证交换空间:
1
2sudo swapon --show
free -h
通过以上步骤,你可以在 Linux 系统中成功创建和启用交换空间。
linux tar命令 多线程压缩
在Linux系统中,tar
命令用于创建归档文件,通常与gzip
、bzip2
等压缩工具结合使用。默认情况下,tar
命令不支持多线程压缩,但你可以通过使用多线程压缩工具来实现这个功能。下面是几种方法:
方法一:使用 pigz
(parallel implementation of gzip)
pigz
是 gzip
的多线程版本,可以直接替代 gzip
使用。
安装
pigz
:1
2sudo apt-get install pigz # Ubuntu/Debian
sudo yum install pigz # CentOS/RHEL使用
tar
和pigz
进行多线程压缩:1
tar -cf - /path/to/directory | pigz -p 8 > archive.tar.gz
其中
-p 8
指定了使用 8 个线程,可以根据你的 CPU 核心数进行调整。
方法二:使用 pxz
(parallel xz)
pxz
是 xz
的多线程版本。
安装
pxz
:1
2sudo apt-get install pxz # Ubuntu/Debian
sudo yum install pxz # CentOS/RHEL使用
tar
和pxz
进行多线程压缩:1
tar -cf - /path/to/directory | pxz -T8 > archive.tar.xz
其中
-T8
指定了使用 8 个线程。
方法三:使用 pbzip2
(parallel bzip2)
pbzip2
是 bzip2
的多线程版本。
安装
pbzip2
:1
2sudo apt-get install pbzip2 # Ubuntu/Debian
sudo yum install pbzip2 # CentOS/RHEL使用
tar
和pbzip2
进行多线程压缩:1
tar -cf - /path/to/directory | pbzip2 -p8 > archive.tar.bz2
其中
-p8
指定了使用 8 个线程。
示例总结
例如,要使用 pigz
进行多线程压缩 /home/user/data
目录,命令如下:
1 | tar -cf - /home/user/data | pigz -p 8 > data.tar.gz |
解压缩命令相应地调整为:
1 | pigz -d -p 8 data.tar.gz | tar -xf - |
以上这些方法都可以显著加快压缩过程,特别是在处理大型文件或目录时,选择合适的线程数可以充分利用多核 CPU 的性能。
linux scp 忽略指定目录
在 Linux 上使用 scp
(Secure Copy)命令时,如果你想要忽略特定目录,可以使用 rsync
命令的 --exclude
选项,因为 scp
本身并没有直接提供忽略特定目录的功能。rsync
是一个功能更强大的工具,可以在网络上同步文件和目录。
以下是如何使用 rsync
忽略特定目录的示例:
1 | rsync -avz --exclude '忽略的目录' 源路径 用户名@远程主机:目标路径 |
这里是具体步骤:
- **
-a
**:归档模式,表示递归复制文件,并保持文件的属性。 - **
-v
**:详细模式,显示过程信息。 - **
-z
**:压缩传输文件以节省带宽。 - **
--exclude
**:指定要忽略的目录或文件。
假设你想要将本地的 /home/user/data
目录复制到远程主机 remote_host
的 /backup
目录,但要忽略 data/ignore_this_dir
目录,可以使用以下命令:
1 | rsync -avz --exclude 'ignore_this_dir' /home/user/data user@remote_host:/backup |
如果你必须使用 scp
,可以考虑以下变通方法:
- 创建一个临时副本:在本地创建一个源目录的临时副本,并删除要忽略的目录。
- 使用
scp
复制临时副本:将临时副本复制到远程主机。 - 删除临时副本:删除本地的临时副本。
例如:
1 | # 创建临时副本 |
这种方法虽然有点笨拙,但可以在没有 rsync
时实现类似的功能。推荐使用 rsync
,因为它更高效且功能强大。
禁用内核升级
查看可用内核
1
2
3dpkg --list | grep linux-image
dpkg --list | grep linux-headers
dpkg --list | grep linux-modules锁定内核更新
1
2
3sudo apt-mark hold linux-image-5.15.0-92generic
sudo apt-mark hold linux-headers-5.15.0-92-generic
sudo apt-mark hold linux-modules-extra-5.15.0-92-generic
apt search
apt search命令在包的名称和描述中查找提供的字符串
- apt search package_name
apt show命令提供有关软件包的详细信息
- apt show package_name
apt包管理器在本地数据库/缓存中工作,其中包含来自各个存储库的可用包.该数据库包含有关可用包版本,依赖项等信息.他不包含整个包本身.这些软件包是从远程存储库下载的.
当运行sudo apt update命令时,会在 /var/lib/apt/list目录中创建/更新此缓存.apt search和apt show命令利用此缓存
术语包用于应用程序,程序,软件
当搜索 apt search gambas时,将提供名称或者描述中包含 gambas 的大量软件包列表.此输出列表按照字母顺序排序
为什么会有很多与gambas相关的软件包?
- 因为许多gambas软件包可能是依赖项,如果安装gambas3软件包,他们会自动安装.
- 如果使用apt show gambas3命令,他将显示与gambas3软件包一起安装的所有依赖项
默认情况下,apt search命令会在包名称及其描述中查找搜索项
可以通过指示apt命令仅搜索包名称来缩小搜索范围
- apt search –names-only search_term
apt show
- apt show命令适用于确切的包名称,他提供有关包的更多信息:
- 版本信息
- 存储库信息
- 包信息的来源和维护者
- 在那里提交错误
- 下载以及安装大小
- 依赖关系
- 包的详细说明
- 等等
ubuntu apt 升级指定软件包
在Ubuntu上使用apt
来升级指定的软件包的步骤如下:
步骤计划
- 更新软件包列表:刷新可用软件包及其版本的列表。
- 升级指定软件包:使用
apt install
命令和--only-upgrade
标志。 - 验证升级:检查软件包的版本以确保其已升级。
详细步骤
更新软件包列表:
确保你有关于可用软件包的最新信息:
1
sudo apt update
升级指定软件包:
使用
apt install
命令和--only-upgrade
标志来升级指定的软件包。将package_name
替换为你要升级的软件包名称:1
sudo apt install --only-upgrade package_name
验证升级:
检查软件包的版本以确认其已升级。验证方法取决于软件包。对于大多数软件包,你可以使用以下命令:
1
package_name --version
示例
例如,要升级curl
软件包,你可以按照以下步骤进行:
更新软件包列表:
1
sudo apt update
升级
curl
软件包:1
sudo apt install --only-upgrade curl
验证升级:
1
curl --version
完整脚本
以下是更新软件包列表并升级curl
软件包的完整脚本:
1 |
|
将此脚本保存为一个文件,例如upgrade_package.sh
,使其可执行,然后运行它:
1 | chmod +x upgrade_package.sh |
此脚本将升级你在Ubuntu系统上指定的软件包。
后续步骤
a. 识别任何其他需要升级的软件包,并使用相同的方法。
b. 设置一个cron作业,定期检查并应用关键软件包的升级。
linux 检查网络的命令 详解
在 Linux 中,有多种命令可以用于检查网络连接、配置和状态。以下是一些常用的命令及其用法:
ping:
1
ping <目标主机或 IP 地址>
ping
命令用于测试本地主机与目标主机之间的连接是否正常。它发送 ICMP 回显请求报文,并等待目标主机回复。如果目标主机正常响应,表示网络连接正常。ifconfig 或 ip addr:
1
ifconfig
或者
1
ip addr
ifconfig
或ip addr
命令用于显示当前系统的网络接口信息,包括 IP 地址、MAC 地址、网络接口状态等。netstat 或 ss:
1
netstat -tuln
或者
1
ss -tuln
netstat
或ss
命令用于显示当前系统的网络连接状态和监听的端口。以上命令显示当前所有的 TCP 和 UDP 连接。traceroute:
1
traceroute <目标主机>
traceroute
命令用于追踪数据包从本地主机到目标主机的路径,显示经过的每个路由器的 IP 地址和到达目标主机的时间。nslookup 或 dig:
1
nslookup <域名>
或者
1
dig <域名>
nslookup
或dig
命令用于查询域名的 DNS 解析信息,包括域名对应的 IP 地址等。route 或 ip route:
1
route -n
或者
1
ip route
route
或ip route
命令用于显示当前系统的路由表,包括默认网关等路由信息。
以上是一些常用的网络检查命令及其用法,可以帮助你在 Linux 系统中诊断和解决网络问题。
ip配置
- 临时更改:
sudo ifconfig ip-address netmask mask
, 例如:sudo ifconfig 192.167.0.92 netmask 255.255.0.0
- 永久更改:修改
/etc/network/interface
文件
linux vim命令 复制文件中指定字符串并进行搜索
如果你想在一个文件中找到指定的字符串,并将该字符串复制到寄存器中以供后续搜索或操作,你可以使用以下步骤:
1. 寻找并复制字符串:
打开文件,进入正常模式。
使用
/
进行正向搜索,找到目标字符串。在找到字符串后,可以使用
yiw
命令将光标下的单词复制到寄存器中。其中,yi
是 “yank in” 的缩写,w
表示单词。1
2/target_string
yiw这将把光标所在的单词复制到寄存器。
2. 使用寄存器进行搜索:
粘贴刚刚复制的字符串到搜索命令中。
1
/<Ctrl + r>0
这里
<Ctrl + r>0
表示将寄存器0
中的内容粘贴到搜索命令中。0
是寄存器的编号,你可以根据需要使用不同的寄存器。按
Enter
执行搜索。
这样,你就可以在文件中使用复制的字符串进行进一步的搜索操作。这种方法可以用于在文件中查找与特定字符串相关的其他内容。
linux 查看文件开始n行数据
在Linux中,你可以使用head
命令来查看文件的前几行数据。以下是一些使用head
命令的示例:
查看文件的前n行(默认为前10行):
1
head filename
例如,查看文件 “example.txt” 的前10行:
1
head example.txt
查看文件的前n行:
1
head -n 20 filename
这将显示文件 “filename” 的前20行。你可以将数字20替换为你想要查看的行数。
查看多个文件的前n行:
1
head -n 15 file1.txt file2.txt
这将显示 “file1.txt” 和 “file2.txt” 的前15行。
请注意,head
命令默认显示前10行,但你可以使用-n
选项来指定要显示的行数。如果你想查看文件的末尾行,请使用tail
命令。
linux 忘记密码
重启系统,全程按着shift键,直到出现 GNU GRUB 界面,并且选择 Advanced options for ubuntu
选择 recovery mode (可能有两个,选择最新的,即上面出现的)
选择root,根据提示获取root权限后,输入 cat /etc/shadow 查看用户名
输入 passwd username 修改密码
重启登陆即可
如何查看可执行程序和动态库文件的架构和平台信息以及如何根据信息区分程序对应的架构和适用的平台
在软件开发和系统调试过程中,了解可执行程序和动态库文件的架构和平台信息是非常重要的。通过查看这些信息,我们可以确定文件所适用的操作系统和硬件平台,并根据架构信息选择合适的编译工具和库文件。本文将详细介绍如何查看可执行程序和动态库文件的架构和平台信息,并提供一些方法来区分程序对应的架构和适用的平台。
架构和平台信息简介
- 架构信息描述计算机系统的硬件特征,包括处理器的位数、字节序和指令集类型等。平台信息指明文件所适用的操作系统和硬件平台。了解文件的架构和平台信息对于选择合适的编译工具、库文件和运行环境非常关键。
查看可执行程序架构和平台信息的方法
- file 命令
- file 是一个常用的命令行工具,可用于检测文件类型和属性。通过 file 命令可以查看可执行程序的架构和平台信息。
- 使用方法:在终端中执行以下命令
1
$ file /path/to/executable
- 返回结果中的描述部分通常会包含架构和平台信息。
- readelf 命令
- readelf 是一个强大的命令行工具,用于查看可执行程序和目标文件的信息,包括架构和平台信息。
- 使用方法:在终端中执行以下命令
1
$ readelf -h /path/to/executable
- 返回结果中的 “Class” 字段表示架构信息,“OS/ABI” 字段表示平台信息。
- ldd 命令
- ldd 是一个用于打印可执行程序或动态库文件所依赖的共享库的命令行工具。通过 ldd 命令也可以查看可执行程序的架构和平台信息
- 使用方法:在终端中执行以下命令
1
$ ldd /path/to/executable
- 返回结果中的描述部分通常包含架构和平台信息。
- objdump 命令
- objdump 是一个强大的反汇编工具,也可以用于查看动态库文件的架构和平台信息。
- 使用方法:在终端中执行以下命令
1
$ objdump -f /path/to/library.so
- 返回结果中的 “file format” 和 “architecture” 字段表示架构信息,“attributes for” 字段表示平台信息。
- file 命令
区分程序对应的架构和适用的平台
- 通过查看可执行程序和动态库文件的架构信息,我们可以确定文件的位数和指令集类型。常见的架构包括 x86、x86_64、ARM 和 MIPS 等。根据不同的架构,可以选择相应的编译工具和库文件进行开发和调试。平台信息则指明文件所适用的操作系统和硬件平台,如 Linux、Windows、macOS、Android 和 iOS 等。根据平台信息,我们可以选择合适的操作系统和运行环境来部署和运行程序。
总结
- 了解可执行程序和动态库文件的架构和平台信息对于软件开发和系统调试至关重要。本文介绍了几种常用的方法来查看文件的架构和平台信息,包括 file、readelf、ldd 和 objdump 等命令。同时,根据架构信息和平台信息,我们可以选择合适的编译工具、库文件和运行环境。通过掌握这些方法和技巧,我们能够更好地理解和处理软件和系统,确保软件的正确性和性能。
ubuntu 修改swap大小
要修改Ubuntu上的swap大小,可以通过以下步骤进行操作。请注意,这些步骤可能会导致数据丢失或系统故障,因此在进行任何更改之前,请确保备份重要数据。
检查当前的swap大小:
使用以下命令检查当前的swap分区和大小:1
sudo swapon --show
或者
1
free -h
这将显示当前的swap使用情况。
禁用swap:
在修改swap之前,最好先禁用swap分区:1
sudo swapoff -a
删除旧的swap文件或分区:
如果您的swap是通过文件创建的,可以删除旧的swap文件。如果是分区,则跳过此步骤。删除swap文件:
1
sudo rm /swapfile
创建新的swap文件或分区:
根据您的需求,您可以选择创建新的swap文件或调整分区大小。创建swap文件:
1
sudo fallocate -l [新的swap大小]G /swapfile
其中,[新的swap大小]是您想要的新swap大小,以G为单位。例如,如果您希望将swap大小更改为4GB,将[新的swap大小]替换为4。
1
2sudo chmod 600 /swapfile
sudo mkswap /swapfile创建swap分区:
如果您要调整swap分区的大小,可以使用磁盘工具(如GParted)进行分区调整。请注意,这可能需要使用Live CD/USB。
启用新的swap:
对于新的swap文件:1
sudo swapon /swapfile
对于新的swap分区,请重启系统。
更新 /etc/fstab 文件:
为了确保在系统重新启动时新的swap设置仍然有效,您需要更新/etc/fstab
文件。打开这个文件:1
sudo nano /etc/fstab
在文件中添加一行,指定新的swap文件或分区:
1
/swapfile none swap sw 0 0
如果使用分区,则更新对应的分区信息。
检查新的swap大小:
使用以下命令确保新的swap设置已经生效:1
sudo swapon --show
或者
1
free -h
这应该显示新的swap大小。
重启系统:
最后,为了确保所有更改都得到应用,请重新启动系统:1
sudo reboot
请谨慎执行这些步骤,特别是在生产环境中。如果您不确定如何操作,建议在进行更改之前查阅相关文档或寻求专业建议。
linux ssh自动化管理
在 Linux 中自动化 SSH 管理可以通过多种方式实现,其中一些包括使用 SSH 密钥对、SSH 配置文件、SSH 代理、以及脚本化工具等。
使用 SSH 密钥对
- 生成 SSH 密钥对:
1
ssh-keygen -t rsa -b 4096
- 将公钥添加到远程服务器:
1
ssh-copy-id user@remote_host
- 配置 SSH 代理:
可以使用ssh-agent
和ssh-add
命令管理 SSH 密钥,避免在每次连接时都输入密码。
使用 SSH 配置文件
SSH 配置文件位于 ~/.ssh/config
,可以配置各种连接选项。示例:
1 | Host alias_name |
使用脚本自动化连接
可以编写脚本来自动化 SSH 连接和命令执行,例如使用 Bash 或 Python 脚本。这些脚本可以使用 SSH 密钥对进行身份验证,并在需要时执行特定的命令或操作。
使用自动化工具
有一些专门用于自动化远程连接和管理的工具,例如 Ansible、Fabric 或 Paramiko(Python SSH 库)。这些工具提供了更高级的功能,允许您批量执行命令、配置管理和远程任务等。
一些示例
使用 SSH 配置文件简化连接:
在~/.ssh/config
中定义主机别名和连接参数,使得通过简单别名即可连接。使用脚本批量执行命令:
编写 Bash 或 Python 脚本,使用 SSH 连接并在多台服务器上执行特定命令。使用自动化工具进行配置管理:
使用 Ansible 等自动化工具,可以定义剧本 (playbooks),批量管理多台远程主机的配置和操作。
以上方法可根据需求和环境适用。安全性、灵活性和易用性都是自动化管理中需要考虑的关键因素。
使用 SSH 密钥对来进行身份验证。
使用 SSH 密钥对进行身份验证是一种更安全和推荐的方式,相比于使用密码,它提供了更强的安全性。以下是使用 SSH 密钥对进行身份验证的基本步骤:
生成 SSH 密钥对:
在本地计算机上生成 SSH 密钥对,包括私钥和公钥。可以使用以下命令生成 SSH 密钥对:1
ssh-keygen -t rsa -b 4096
上述命令将生成一个 4096 位的 RSA 密钥对。在执行该命令后,系统会询问您要存储密钥的位置以及是否要设置密码来保护私钥。根据需要进行设置。
将公钥添加到远程服务器:
将生成的公钥(通常是~/.ssh/id_rsa.pub
)内容复制到远程服务器的~/.ssh/authorized_keys
文件中。可以使用以下命令将公钥复制到远程服务器:1
ssh-copy-id user@remote_host
这将会提示您输入远程主机的密码,然后将本地计算机上的公钥添加到远程主机的
authorized_keys
文件中。验证 SSH 密钥是否工作:
使用 SSH 连接到远程服务器,如果一切设置正确,连接时将不再需要输入密码:1
ssh user@remote_host
确保您可以无需输入密码直接登录到远程服务器,这意味着 SSH 密钥对身份验证已经成功。
通过使用 SSH 密钥对,您可以更安全地进行远程连接,同时可以通过密码保护私钥来增加额外的安全性。此外,记住定期更新 SSH 密钥对以及谨慎管理和保护您的私钥非常重要。
ubuntu apt 查看安装包的库文件和头文件
要查看已安装软件包中的库文件和头文件,您可以使用 dpkg -L
命令来查找特定软件包已安装的文件列表。以下是在 Ubuntu 上使用 dpkg -L
来查找已安装软件包中的库文件和头文件的示例:
查看已安装软件包的库文件
1 | dpkg -L libssl-dev |
这将显示 libssl-dev
软件包安装的文件列表,其中应包括 OpenSSL 库文件。
查看已安装软件包的头文件
1 | dpkg -L libssl-dev | grep /usr/include/ |
这将筛选出 libssl-dev
软件包中安装的头文件路径。通常,C/C++ 的头文件位于 /usr/include/
目录下。
您可以将 libssl-dev
替换为您想要检查的其他软件包名称,以查找特定软件包已安装的文件列表。这种方法可以帮助您查找软件包中包含的特定文件,以便在编译和开发过程中正确地包含和链接所需的文件。
ubuntu 系统全部快捷键 详解
Ubuntu系统的全部快捷键在不同版本和桌面环境下可能会有所不同。下面是一些Ubuntu系统常见的全局快捷键及其详细说明,主要针对Ubuntu 20.04及更早版本以及默认的GNOME桌面环境:
通用快捷键:
Ctrl + Alt + Delete
:打开系统监视器,允许你终止或重新启动系统。Ctrl + Alt + T
:打开终端。Super
键(通常是Windows键):打开应用程序菜单或Dash(Ubuntu的应用启动器)。Super + D
:最小化或还原所有窗口,显示桌面。Alt + F2
:打开运行命令对话框。
窗口管理快捷键:
Alt + Tab
:切换活动应用程序。Alt +
(~
键上方的键):在当前应用程序的窗口之间切换。Super + 数字键
:打开或切换到任务栏上的相应应用程序。Super + W
:显示所有打开窗口,允许你选择要切换到的窗口。Super + Arrow键
:将窗口最大化、最小化或分割到屏幕的一侧。Alt + F4
:关闭当前窗口。
文本编辑和终端快捷键:
Ctrl + C
:中断当前进程。Ctrl + Z
:将当前进程移到后台。Ctrl + A
:将光标移到行首。Ctrl + E
:将光标移到行尾。Ctrl + U
:删除从光标位置到行首的文本。Ctrl + K
:删除从光标位置到行尾的文本。Ctrl + L
:清除终端屏幕。
文件管理器快捷键:
Ctrl + N
:打开新窗口。F2
:重命名文件或文件夹。Ctrl + H
:显示或隐藏隐藏文件和文件夹。Ctrl + L
:将焦点切换到地址栏。Ctrl + A
:全选文件或文件夹。
工作区和多任务处理:
Ctrl + Alt + 左/右箭头
:切换工作区。Super + S
:显示所有工作区和打开窗口,允许你移动窗口到不同的工作区。
请注意,不同的桌面环境(如GNOME、KDE、Xfce等)可能会有不同的快捷键配置。此外,你还可以自定义快捷键,具体取决于你使用的桌面环境和个人偏好。要查看更多系统和桌面环境特定的快捷键,可以查阅相关文档或设置界面。
linux 查看连接到本机的ssh客户端有哪些
要查看连接到Linux服务器的SSH客户端,你可以使用以下命令:
1 | netstat -tnpa | grep 'ESTABLISHED.*ssh' |
这个命令会显示当前所有建立的SSH连接。其中:
netstat
是一个网络工具,用于显示各种网络相关信息。-tnpa
选项用于显示TCP连接的信息。grep 'ESTABLISHED.*ssh'
用于过滤并仅显示已建立的SSH连接。
这将列出所有已建立的 SSH 连接以及它们的相关详细信息,包括远程 IP 地址、本地端口、远程端口等。
linux 使用命令发送tcp请求
在 Linux 中,你可以使用 telnet
或 nc
命令来发送 TCP 请求。这两个命令都可以用于测试 TCP 连接或发送数据到远程服务器。
使用 telnet 命令:
1 | telnet <服务器地址> <端口号> |
示例:
1 | telnet 127.0.0.1 80 |
这将尝试连接到本地主机的 80
端口。连接成功后,你可以手动输入 HTTP 请求或其他内容。退出 telnet 会话可以通过输入 Ctrl+]
,然后输入 quit
来完成。
使用 nc 命令:
nc
命令(也称为 netcat)是一个强大的网络工具,可以用于创建任何类型的连接,包括 TCP 和 UDP 连接。
1 | nc <服务器地址> <端口号> |
示例:
1 | nc 127.0.0.1 80 |
连接建立后,你可以手动输入要发送的数据。退出 nc 会话可以通过输入 Ctrl+C
来中断连接。
这两个命令都是非常基本和通用的,用于测试 TCP 连接和发送数据。然而,它们并不提供像 HTTP 请求这样的高级协议功能,仅用于简单的连接和数据交换。
C++ 如何查看可执行文件是否含有调试信息
要检查 C++ 可执行文件是否包含调试信息,可以使用一些工具来查看可执行文件的元数据。在 Linux 环境下,您可以使用 readelf
和 objdump
这样的工具。在 Windows 平台上,您可以使用 dumpbin
工具。
Linux 上使用 readelf 和 objdump
readelf:它是一个用于显示 ELF(Executable and Linkable Format)文件信息的工具。要查看可执行文件的调试信息,可以使用以下命令:
1
readelf -S your_executable_file
这会显示文件中各个节(sections)的信息,您可以检查是否有
.debug
或.debug_*
这样的节存在。这些节通常存储调试信息。objdump:这是另一个用于查看可执行文件信息的工具,可以使用以下命令:
1
objdump -h your_executable_file
这将列出文件的各个节的信息,您可以检查是否存在与调试信息相关的节。
Windows 上使用 dumpbin
在 Windows 上,您可以使用 Visual Studio 提供的 dumpbin
工具来查看可执行文件的信息,包括是否存在调试信息。
1 | dumpbin /headers your_executable_file |
这将显示可执行文件的头部信息,您可以在其中寻找与调试信息相关的部分。
请注意,调试信息在发布版本的可执行文件中通常被剥离以减少文件大小。在生产环境中,通常不会包含调试信息。
如何校准Linux服务器时间
Linux查看服务器当前事件
- 查看当前时区: date -R
- 查看当前日期和时间: date
校准Linux服务器时间
- Linux中有个ntp包可以自动校准时间,安装后可以很方便地校准事件
- 安装前可以通过 cat /proc/version 命令查看当前操作系统版本信息
- Debian系统安装NTP
- apt-get install ntpdate
- CentOS系统安装NTP:
- yun install ntp
校准时间命令
- ntpdate cn.pool.ntp.org
- 其中,cn.pool.ntp.org是ntp网络授时组织的中国授时源
- 执行校准命令后,会自动调整时间并显示校正的时间偏移量
使用命令 hwclock -w 保存配置,以便重启后时间再次不对
du + sort + head
du -a ./ | sort -nr
- 按照文件从大到小排序(包含隐藏文件,包含目录,文件,层级目录下文件)
du -m –max-depth=1 ./ | sort -nr | head -n 10
- 指定目录第一层,显示前top10
- -m : 统计单位为MB
du -m –max-depth=1 ./ | sort -nr -o ‘sort.txt’ | head -n 10
- 使用sort -o 参数将排序结果存入指定文件 sort.txt 中