Some linux tips
常用指令
1.ss -tuln 显示当前正在使用的端口
2.ps -aux |grep
sed
, awk
, grep
和 find
是Unix/Linux系统中非常强大的文本处理和文件查找工具。以下是它们的常见用法及一些综合用法示例。
sed
(stream editor)
sed
是一个非交互式的流编辑器,用于文本的查找、替换和文本的其他处理。
基本用法:
1
sed 's/pattern/replacement/' file
这个命令会将文件中第一次出现的
pattern
替换为replacement
。删除行:
1
sed '2d' file # 删除文件的第二行
替换所有匹配:
1
sed 's/pattern/replacement/g' file # 替换所有匹配的内容
awk
awk
是一个强大的文本处理工具,适用于按列处理数据和生成报告。
基本用法:
1
awk '{print $1, $2}' file # 打印文件的第一和第二列
模式匹配:
1
awk '/pattern/ {print $0}' file # 打印包含pattern的行
计算总和:
1
awk '{total += $1} END {print total}' file # 计算文件第一列的总和
grep
grep
用于在文本中搜索匹配正则表达式的行。
基本用法:
1
grep 'pattern' file # 搜索文件中包含pattern的行
递归搜索:
1
grep -r 'pattern' dir/ # 在目录中递归搜索
忽略大小写:
1
grep -i 'pattern' file # 忽略大小写搜索
find
find
用于在文件系统中搜索文件和目录。
基本用法:
1
find /path -name 'filename' # 按文件名搜索
按类型搜索:
1
2find /path -type d # 搜索目录
find /path -type f # 搜索文件按时间搜索:
1
find /path -mtime -1 # 搜索一天内修改过的文件
综合用法示例
查找并删除特定文件:
1
find /path -name '*.log' -exec rm {} \;
查找文件并在内容中搜索模式:
1
find /path -name '*.txt' -exec grep 'pattern' {} \;
查找并替换文件中的文本:
1
find /path -name '*.txt' -exec sed -i 's/old_text/new_text/g' {} \;
计算文件中匹配行的总和:
1
grep 'pattern' file | awk '{total += $3} END {print total}'
查找并打印特定行的内容:
1
find /path -name '*.txt' -exec awk '/pattern/ {print $0}' {} \;
这些工具组合使用可以进行非常复杂和强大的文本处理和文件操作。通过理解每个工具的基础功能,你可以轻松地构建适合你需求的命令。
find补充
在 find
命令中,最后的反斜杠 \;
是用来结束 -exec
选项的。它告诉 find
命令,前面的 -exec
动作已经结束,应该对每个找到的文件执行这个动作。反斜杠 \
是用来转义分号 ;
的,防止它被shell解释。
-exec
选项
-exec
选项用于在找到的每个文件上执行指定的命令。它的语法如下:
1 |
|
<path>
: 搜索路径。<conditions>
: 搜索条件,例如按名称、类型、时间等。<command>
: 要执行的命令。{}
: 占位符,代表找到的每个文件。\;
: 结束-exec
选项。
示例
删除所有
.log
文件:1
find /path -name '*.log' -exec rm {} \;
这个命令会在
/path
目录及其子目录中查找所有以.log
结尾的文件,并使用rm
命令删除它们。每找到一个文件,就会执行一次rm
命令。查找并列出所有
.txt
文件的详细信息:1
find /path -name '*.txt' -exec ls -l {} \;
这个命令会在
/path
目录及其子目录中查找所有以.txt
结尾的文件,并使用ls -l
命令列出它们的详细信息。
+
结尾的 -exec
还有一种更高效的方式是使用 +
结束 -exec
选项,它会将所有找到的文件一次性传递给命令,而不是一个一个地传递:
1 |
|
这种方式在某些情况下可以显著提高效率,因为它减少了创建新进程的开销。
解释总结
\;
: 告诉find
命令结束-exec
动作。{} \;
: 每找到一个文件,执行一次命令。{}
+: 将所有找到的文件一次性传递给命令。
希望这些解释能够帮助你更好地理解 find
命令中反斜杠 \;
的作用。
文件系统
文件系统查看
文件系统一开始就将 inode 与 block 规划好了,除非重新格式化(或者利用 resize2fs 等命令变更文件系统大小),否则 inode 与 block 固定后就不再变动。
相关的 superblock 信息我们等一下会以 dumpe2fs 命令来呼叫出来观察喔
dumpe2fs -h
LVM:
http://cn.linux.vbird.org/linux_basic/0420quota_3.php
磁盘和分区等可以作为物理卷 物理卷是 LVM 的基本存储单元。物理卷可以是整个物理硬盘、硬盘分区,甚至是 RAID 设备。物理卷被 LVM 用来创建卷组。
创建物理卷
pvcreat /dev/...
物理卷 (PV)
物理卷是 LVM 的基本存储单元。物理卷可以是整个物理硬盘、硬盘分区,甚至是 RAID 设备。物理卷被 LVM 用来创建卷组。
创建物理卷
:
1
2bash
sudo pvcreate /dev/sdX查看物理卷情况 pvs 或者pvdisplay 卷组以及逻辑卷命令相似 vgs和lvs
卷组 (VG)
卷组是由一个或多个物理卷组成的存储池。卷组将物理卷的存储空间整合在一起,并将其分配给逻辑卷使用。卷组可以动态扩展或缩小,添加或移除物理卷。
创建卷组
:
1
2bash
sudo vgcreate my_volume_group /dev/sdX /dev/sdY
逻辑卷 (LV)
逻辑卷是从卷组中分配出来的存储单元。逻辑卷类似于传统的硬盘分区,但它们可以动态调整大小,迁移数据,甚至可以进行快照。逻辑卷的灵活性使得它们非常适合于动态环境中的存储管理。
创建逻辑卷
:
1
2
3bash
Copy code
sudo lvcreate -L 10G -n my_logical_volume my_volume_group
关系概述
- **物理卷 (PV)**:实际的物理存储设备。
- **卷组 (VG)**:由一个或多个物理卷组成,作为存储池。
- **逻辑卷 (LV)**:从卷组中分配的存储空间,可以作为文件系统、交换分区等使用。
Linux 特殊权限:Sticky Bit、SUID 和 SGID
Sticky Bit
作用:用于防止用户删除或重命名其他用户在公共目录中的文件。常用于公共写入目录如 /tmp
。
使用方法:
设置Sticky Bit:
1
2chmod +t directory_name
chmod 1755 directory_name # 八进制模式查看Sticky Bit:
1
2ls -ld directory_name
drwxrwxrwt 2 user group 4096 Jul 22 12:34 directory_name
SUID(Set User ID)
作用:当文件设置了SUID位时,执行该文件的用户将临时获得文件所有者的权限。这对需要在执行期间获得更高权限的程序非常有用。
使用方法:
设置SUID:
1
2chmod u+s filename
chmod 4755 filename # 八进制模式查看SUID:
1
2ls -l filename
-rwsr-xr-x 1 root root 12345 Jul 22 12:34 filename
SGID(Set Group ID)
作用:当文件设置了SGID位时,执行该文件的用户将临时获得文件所属组的权限。当目录设置了SGID位时,在该目录中创建的文件和子目录将继承该目录的组属性。
使用方法:
设置SGID:
1
2chmod g+s filename_or_directory
chmod 2755 filename_or_directory # 八进制模式查看SGID:
1
2
3ls -l filename_or_directory
-rwxr-sr-x 1 root staff 12345 Jul 22 12:34 filename
drwxrwsr-x 2 root staff 4096 Jul 22 12:34 directory_name
应用场景示例
Sticky Bit 应用场景
公共目录 /tmp
的典型应用:
1 |
|
SUID 应用场景
passwd
命令需要root权限来修改密码文件:
1 |
|
SGID 应用场景
用于项目协作目录,以确保新创建的文件和子目录继承父目录的组属性:
1 |
|
总结
- Sticky Bit:防止用户删除或重命名其他用户的文件,常用于公共目录。
- SUID:使用户在执行文件时临时获得文件所有者的权限,常用于需要更高权限的程序。
- SGID:使用户在执行文件时临时获得文件所属组的权限,并确保目录中创建的文件和子目录继承父目录的组属性,常用于协作环境。
这些特殊权限在合理使用时可以显著提高系统的安全性和灵活性。