分类 Linux 下的文章

使用 grep 命令在 Linux 中查询文件夹中是否存在特定字符串,并返回匹配的文件名和行号。以下是一个示例命令:

grep -rn '要查询的字符串' 文件夹路径

这个命令的参数含义如下:

  • -r:递归地在文件夹及其子文件夹中查找。
  • -n:显示匹配行的行号。
  • '要查询的字符串':需要查询的字符串。
  • 文件夹路径:要查询的文件夹路径。

例如,如果你想要在 /path/to/folder 文件夹中查找是否存在字符串 "hello",并返回匹配的文件名和行号,可以执行以下命令:

grep -rn 'hello' /path/to/folder

这将在 /path/to/folder 及其子文件夹中查找包含字符串 "hello" 的所有文件,并返回匹配的文件名和行号。

SCP (Secure Copy) 是一个在 Linux 和 Unix-like 系统中广泛使用的命令行工具,用于通过 SSH (Secure Shell) 协议在本地与远程主机之间安全地复制文件和目录。以下是使用 SCP 命令的一些基本用法和示例:

基本语法

scp [选项] [源文件或目录] [目标文件或目录]

其中:

  • [选项]:可选参数,用于指定复制行为的细节,如端口、压缩、身份验证等。
  • [源文件或目录]:要复制的文件或目录的路径。如果是远程文件或目录,格式通常是 user@hostname:path
  • [目标文件或目录]:复制的目的地路径。同样,对于远程目标,使用 user@hostname:path 的格式。

示例

从本地复制到远程

将本地文件 local_file.txt 复制到远程主机 remote_host 上的用户 remote_user 的家目录:

scp local_file.txt remote_user@remote_host:/home/remote_user/

从远程复制到本地

从远程主机 remote_host 上的用户 remote_user 的家目录下载文件 remote_file.txt 到本地当前目录:

scp remote_user@remote_host:/home/remote_user/remote_file.txt .

注意 . 表示当前目录。

复制目录(递归复制)

使用 -r--recursive 选项复制整个目录及其内容:

# 从本地复制目录到远程
scp -r local_directory remote_user@remote_host:/remote/path/

# 从远程复制目录到本地
scp -r remote_user@remote_host:/remote/path/remote_directory .

指定端口

当远程SSH服务运行在非默认端口(如2222)上时,使用 -P--port 选项指定端口:

scp -P 2222 local_file.txt remote_user@remote_host:/home/remote_user/

压缩传输

使用 -C--compression 选项启用压缩,以减少传输数据量,特别是在网络带宽有限的情况下:

scp -C local_file.txt remote_user@remote_host:/home/remote_user/

保持原文件属性

使用 -p--preserve 选项保留原文件的修改时间、访问时间和权限模式:

scp -p local_file.txt remote_user@remote_host:/home/remote_user/

身份验证

使用 SCP 命令时,需要确保已经设置了正确的 SSH 公钥/私钥对以便无密码登录,或者在首次连接时手动输入远程用户的密码。如果需要频繁复制且不想每次都输入密码,建议配置 SSH 公钥认证以实现免密登录。

注意事项

  • 确保目标路径存在且有适当的写权限。
  • 请确保 SSH 服务在远程主机上正常运行且防火墙规则允许 SSH 连接。
  • 若使用非默认端口,需确保远程主机上的 SSH 服务监听该端口。
  • 考虑使用 -v--verbose 选项获取详细的复制过程信息,用于调试连接问题。

以上就是使用 SCP 命令的基本方法和示例,根据实际需求选择相应的选项和参数进行文件和目录的复制操作。

在 Linux 中创建 swap 分区通常分为以下几个步骤:

1. 确定 swap 大小
根据系统需求和可用磁盘空间,决定要创建的 swap 分区大小。一般建议 swap 大小至少为物理内存的 2 倍,但具体大小可以根据实际工作负载和服务器资源进行调整。例如,如果物理内存为 4 GB,则可以考虑创建一个 8 GB 的 swap 分区。

2. 创建 swap 文件
有两种常见方法创建 swap 文件:

a) 使用 dd 命令创建一个空白文件,并将其格式化为 swap 文件。例如,创建一个 2 GB 的 swap 文件:

sudo dd if=/dev/zero of=/swapfile bs=1G count=2

b) 使用 fallocate 命令快速分配空间创建 swap 文件(如果系统支持):

sudo fallocate -l 8G /swapfile

上述命令会在根目录下创建一个名为 swapfile 的文件,大小分别为 2 GB 和 8 GB,根据第 1 步确定的实际大小进行调整。

3. 格式化为 swap 文件系统
使用 mkswap 命令将创建的文件格式化为 swap 文件系统:

sudo mkswap /swapfile

4. 激活 swap 分区
使用 swapon 命令激活刚刚创建的 swap 文件:

sudo swapon /swapfile

这时,新创建的 swap 分区应该已经生效。可以通过 free -h 命令来验证 swap 分区是否已成功添加并被系统识别:

free -h

5. 使 swap 分区设置持久化
若要确保重启后 swap 分区仍能自动挂载,需要将其添加到 /etc/fstab 文件中:

echo '/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstab

这行命令将指定的 swap 文件路径、文件系统类型、挂载选项等信息追加到 /etc/fstab 文件中,确保系统启动时自动挂载 swap。

6. 可选:调整 swappiness 参数
可以通过修改 /etc/sysctl.conf 文件中的 vm.swappiness 参数来调整系统使用 swap 的倾向。默认值通常为 60,如果希望减少 swap 使用,可以降低该值(比如设为 30)。编辑文件并添加或修改如下行:

sudo vi /etc/sysctl.conf

在打开的文件中加入或修改以下行:

vm.swappiness=30

保存文件后,执行 sudo sysctl -p 使更改立即生效,或者重启系统让更改在下次启动时生效。

完成以上步骤后,您已经在 Linux 系统上成功创建了一个持久化的 swap 分区。如果在后续使用过程中需要调整 swap 大小或删除 swap 分区,请参照相应的操作指南进行操作。