🍉Linux下常用命令整理~持续更新……
前言:
接触Linux也有很久了,都是东学一点,西学一点也并没有系统的去学习一下这些命令,自己也有过一版的笔记,不过是纯手写的在外也不方便查看
所以就想着做个电子版的文档方便日后查看使用,但是进阶指令什么的我确是一片空白,本文章参考《鸟哥的LINUX私房菜_基础学习篇(第三版)》进行整理。
如果有小伙伴需要IT方面的电子书,可以发私信给我,免费分享给你。如果大家经济允许的话还是希望支持一下正版书籍!
Linux目录整理说明:
Linux目录整理说明: /bin: bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 /boot: 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。 /dev : dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。 /etc: 配置文件 1.用户相关信息 /ect/passwd 2.个人密码 /ect/shadow 3.用户组 /etc/ group 4.第三方软件的配置文件 /etc/opt /home: 用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。 /lib: lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。 /lost+found: 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。 /media: linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。 /mnt: 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。 /opt: 第三方辅助软件 /proc: proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 1.修改ping主机:0表示可以ping,0表示ping不同 /proc/sys/net/ipv4/icmp_echo_ignore_all /root 该目录为系统管理员,也称作超级权限者的用户主目录。 /sbin: s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。 /selinux: 这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。 /srv: 该目录存放一些服务启动之后需要提取的数据。 /sys: 这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。 sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。 该文件系统是内核设备树的一个直观反映。 当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。 /tmp: tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。 /usr: 与软件安装/执行有关 1.以前的软件安装位置 /usr/local 2.在线帮助文档 /usr/share/man 3.软件说明文档 /usr/share/doc 4.时区相关 /usr/share/zoneinfo /usr/bin: 系统用户使用的应用程序。 /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。 /usr/src: 内核源代码默认的放置目录。 / var : var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 1.用户登录的文件:使用last查看,cat查看会乱码 / var /log/wtmp 2.用户邮箱 / var /mail 3.程序相关 / var /run 4.新闻组 / var /spool/news /run: 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 / var /run 目录,应该让它指向 run。
一、Linux系统常用命令
Windows下CMD关闭占用端口
# 查询8080端口 netstat -nao | findstr "8080" # 关闭pid为3017的进程 taskkill /pid 3017 /F
软件图标变白修复
新建文件文件,粘贴以下内容,并将文件扩展名修改为bat
@echo off color 0a echo ************************************************************************** echo 请按下任意按键开始修复桌面白图标情况 echo 注意:本脚本只适用于图标损坏,并不适用用于文件打不开的文件图标修复!!! echo ************************************************************************** pause ::打开图标缓存文件夹 ::cd %localappdata% cd /d %userprofile%\AppData\Local ::删除图标缓存文件 del IconCache.db /a ::终止进程资源管理器 taskkill /f /im explorer.exe ::启动资源管理器 start explorer.exe echo. echo 修复完毕,感谢使用 pause
su 和 su - 区别
su
和 su -
是两个用于切换用户身份的命令,它们之间有一些重要的区别。
-
su
命令:- 使用
su
命令时,你可以切换到另一个用户的身份,但不改变环境变量和工作目录。 - 例如,如果你使用
su username
,你将切换到指定用户(username)的身份,但你仍然保留原用户的环境变量和工作目录。 - su username
- 使用
-
su -
命令:- 使用
su -
命令时,不仅会切换到另一个用户的身份,还会加载该用户的环境变量和工作目录。 - 这意味着你将以目标用户的身份启动一个新的 shell 会话,该 shell 会话将具有目标用户的环境设置。
- su - username
- 使用
总结一下:
su
只切换用户身份,但不切换环境。su -
不仅切换用户身份,还切换到目标用户的环境。
在实际使用中,根据你的需求,选择使用 su
或 su -
。如果需要执行目标用户的环境设置,最好使用 su -
。
一条命令关闭所有【Tomcat】进程
方式一:使用 xargs 将进程ID传递给 kill 命令,如果进程不存在不执行(-r 参数)
ps -ef | grep tomcat | grep -v grep | awk '{print $2}' | xargs -r kill -9
这条命令首先通过ps -ef
列出所有的进程,然后用grep tomcat
找出包含“tomcat”的行,
接着grep -v grep
排除掉当前正在执行的grep
命令自身的行,
最后使用awk '{print $2}'
提取出第二列的进程ID,
并通过xargs kill -9
将这些进程ID作为参数传递给kill -9
命令以强制终止对应的进程。
方式二:使用pkill命令
pkill -9 -f tomcat
这条命令更加简洁且安全,它会根据进程名称或命令行中包含的字符串(这里是"tomcat")来终止相应的进程,-f
标志确保了匹配整个命令行,而不是仅仅匹配进程名。
查看及关闭端口对应的进程ID
查看端口对应的进程是否存在:
netstat -ntpl | grep 8080
查看端口对应的进程ID:
netstat -ntpl | grep 8080 | awk '{print $7}' | awk -F '/' '{print $1}'
查看内存内存占用:top
默认top按照cpu使用率进行排序的,如果想要按照内存使用率进行排序,可以通过快捷键:Shift+M,或者命令:top -o %MEM
top - 12:52:58 up 1 day, 1:40, 5 users, load average: 1.09, 1.08, 1.10 Tasks: 149 total, 1 running, 148 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.7 us, 0.7 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st KiB Mem : 31729792 total, 5388080 free, 22601020 used, 3740692 buff/cache KiB Swap: 0 total, 0 free, 0 used. 8720644 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2398 root 20 0 10.3g 5.2g 11896 S 1.3 17.3 22:50.08 java
解释上面输出的内容:
KiB Mem:总共的物理内存大小为31,729,792 KiB(约为31.7 GB)。
- total:总共的物理内存大小。
- free:可用的物理内存大小为5,388,080 KiB(约为5.4 GB)。
- used:已使用的物理内存大小为22,601,020 KiB(约为22.6 GB)。
- buff/cache:缓存和缓冲区使用的物理内存大小为3,740,692 KiB(约为3.7 GB)。此部分包括用于存储文件系统缓存的内存以及其他系统缓存。
KiB Swap:交换分区的相关信息。
- total:交换分区的总大小为0 KiB。
- free:可用的交换分区大小为0 KiB。
- used:已使用的交换分区大小为0 KiB。
- avail Mem:可用的物理内存大小,即可供程序使用的内存大小为8,720,644 KiB(约为8.7 GB)。
关于top命令的进程列表解释如下:
- PID:进程的ID。
- USER:进程属于的用户。
- PR:进程的优先级。
- NI:进程的优先级修正号。
- VIRT:进程使用的虚拟内存大小。
- RES:进程使用的物理内存大小。
- SHR:共享内存大小。
- S:进程的状态(如running、sleeping、stopped等)。
- %CPU:进程的CPU使用率。
- %MEM:进程的内存使用率。
- TIME+:进程已运行的累计时间。
- COMMAND:进程的命令或可执行文件名。
根据你提供的示例输出,PID为2398的进程是一个名为java的命令,使用了大约17.3%的物理内存(约为5.2 GB)。
挖矿病毒rcu_bj:
公司主机有遇到这种情况,这里先记录一下解决办法:
https://www.jianshu.com/p/c1c77a63e824
https://blog.csdn.net/dualvencsdn/article/details/127458496
Linux下实现分片压缩:
背景:大文件传输时候可能不那么方便,万一有网络问题失败了,需要重新传输,这是很难受的。这时候我们可以通过分片压缩来解决这种困扰
分卷压缩
#1、将原始文件(qxzc.mp4)进行压缩成压缩包 # zip -r[递归压缩子目录/文件] 创建的压缩文件的文件名 要压缩的文件名 zip -r qxzc.zip qxzc.mp4 # 2、将压缩包进行分割,单位有:m、g、t等 # zip -s 每个压缩包大小 要分割的压缩包 --out 分片后的压缩包名称(b.zip、b.z01、b.z02……) zip -s 500m qxzc.zip --out b.zip
将分片后的内容(圈出来的内容)拿到Windows本地,用压缩工具解压b.zip即可~
分卷解压
# 1、将分卷内容合并为完整zip # cat 分卷压缩内容 合并后的文件 cat b.* > a.zip # 2、将压缩文件解压,就得到了原始的内容 # 解压 unzip a.zip
sshpass:免输服务器密码,连接到服务器执行命令
最近有个需求,要获取到几十上百台服务器的主机名称,按照之前的方法,纵使有这些服务器的密码。
但是需要一台一台通过ssh连接到服务器,然后只为了执行一条hostname命令,这显然太繁琐了。所以就简单了解了下sshpass命令的使用。
ssh和sshpass区别于联系
SSH(Secure Shell)是一种网络协议,用于安全地连接到远程服务器并在这两个系统之间传输数据。
SSH提供了一种在非安全网络上执行安全远程登录的方式,它使用公钥加密技术来验证远程计算机并允许远程计算机验证用户。
SSH命令用于在Linux和Unix系统中启动SSH客户端会话:
- ssh user@hostname
sshpass是一个非交互式密码提供者,使用SSH通常需要交互式密码输入或使用密钥。
但有些情况下,我们可能需要在脚本中使用SSH做一些自动化的事情,这就需要无人值守的进行身份验证。
sshpass来由于这种需要,它可以为ssh命令提供密码参数,从而实现自动化登录。
sshpass命令的基本用法:
- sshpass -p 'password' ssh user@hostname
这里,-p选项使得我们可以直接在命令行提供密码参数。
注意:在命令行中直接使用明文密码是有风险的,它可能会被其他用户查看或者被历史命令记录下来。
因此,使用sshpass需要谨慎,尽可能地使用SSH密钥对进行身份验证。
简而言之,ssh是用于安全远程登录的工具,而sshpass是为ssh提供自动化密码输入的工具。
需求实现:拿到所有主机的主机名称
1、新建服务器列表文件,ip 密码,使用空格分割即可
vim hosts.txt
2、新建脚本文件,批量查询主机名称
vim host_name.sh
#!/bin/bash while IFS= ' ' read -r ip password do hostname=$(sshpass -p "$password" ssh -n -o ConnectTimeout=10 -o StrictHostKeyChecking=no root @"$ip" "hostname" 2>/dev/ null ) if [ $? -eq 0 ]; then echo "IP: $ip, Hostname: $hostname" else echo "无法连接到主机:$ip" fi done < hosts.txt
Centos7下使用命令行连接WiFI
1、查看可用的无线网卡:拿到无线网卡名称
[root@zhixi /]# iw dev
-
phy#0
:这是无线网络设备的物理标识符,表示物理设备号是0。 -
Interface wlo1
:这是无线网络设备的接口名称,表示该接口是wlo1。(无线网卡名称是wlo1) -
ifindex 3
:这是无线网络接口的索引号,表示该接口的索引号是3。 -
wdev 0x1
:这是无线网络设备的无线接口标识符,表示该设备的无线接口标识是0x1。 -
addr e4:fd:45:6c:ab:1f
:这是无线网络设备的MAC地址,表示该设备的MAC地址是e4:fd:45:6c:ab:1f。 -
type managed
:这是无线网络设备的类型,表示该设备是一个托管型设备,即可以连接到其他无线网络。
2、启动无线网卡:
[root@zhixi /]# ip link set wlo1 up
ps:关闭无线网卡命令:ip link set wlo1 down
3、启动网络管理器
开启网络管理器:systemctl start NetworkManager
管理网络管理器:systemctl stop NetworkManager
网络管理器开机自启(*):systemctl enable NetworkManager
4、开启wifi
[root@zhixi /]# nmcli r wifi on
ps:关闭WiFi命令:nmcli r wifi off
5、查看所有wifi信号
[root@zhixi /]# nmcli dev wifi
6、连接wifi
[root@zhixi /]# nmcli d wifi connect "网络名" password "密码" 网卡名
7、验证Wifi是否连接成功
[root@zhixi /]# nmcli d
[root@zhixi /] # iw dev
可以通过
8、Xshell连接到服务器
[root@zhixi /]# ip addr show
测试远程端口:telnet、nmap
安装telnet:yum -y install telnet
安装nmap:yum -y install nmap
对比:
- telnet命令是一种远程登录协议,它允许用户通过网络连接到远程主机或设备并执行命令。
- nmap命令是一种网络扫描工具,用于扫描和探测网络上的主机、开放的端口和网络服务等信息。
本例,只是为了测试远程端口是否通,比如我的腾讯云服务器,想看下我的阿里云服务器,是否对外开放了xxx端口
- telnet 182.92.209.212 22
- nmap -Pn 182.92.209.212 -p 22
mount: /dev/sda 写保护,将以只读方式挂载
先说背景:这个U盘是烧录盘,装好系统后,想格式化做其他方式使用,在Windows下格式化后(NTFS),显示正常,32GB。
但是在Linux下挂载后,出现了无法写入,并且容量只有4GB多,有点纳闷,下面先来了解下文件系统格式:
1、Fat32文件格式是一种通用格式,任何USB存储设备都会预装该文件系统,可以在任何操作系统平台上使用。最主要的缺陷是只支持最大单文件大小容量为4GB,因此日常使用没有问题,只有在传输大文件时才会显现出缺点。
2、exFAT文件是微软自家创建的用来取代FAT32文件格式的新型文件格式,它最大可以支持1EB的文件大小,非常适合用来存储大容量文件,还可以在Mac和Windows操作系统上通用。虽然是微软的技术,苹果批准在系统中使用该文件格式,因此在Mac系统中格式化存储设备时会出现exFAT文件格式选项。最大的缺点是没有文件日志功能,这样就不能记录磁盘上文件的修改记录。
3、NTFS是微软为硬盘或固态硬盘(SSD)创建的默认新型文件系统,NTFS的含义是 New Technology File System,它基层了所有文件系统的优点:日志功能、无文件大小限制、支持文件压缩和长文件名、服务器文件管理权限等。最大的缺点是Mac系统只能读取NTFS文件但没有权限写入,需要借助第三方工具才能实现。因此跨平台的功能非常差。
找到问题所在了,在Linux下挂载的时候为什么会出现写保护了,应该如何解决呢?看下面说明就明白了,需要重新格式化U盘。
# 第一步操作,查看磁盘名称,然后设置挂载点 [root@zhixi ~]# fdisk -l WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion. 磁盘 /dev/nvme0n1:500.1 GB, 500107862016 字节,976773168 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:gpt Disk identifier: FAC2AB11-FB49-4CCF-B9B8-FD132C517AB4 # Start End Size Type Name 1 2048 4196351 2G EFI System EFI System Partition 2 4196352 8390655 2G Microsoft basic 3 8390656 976773119 461.8G Linux LVM 磁盘 /dev/mapper/centos-root:461.4 GB, 461448937472 字节,901267456 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/mapper/centos-swap:34.4 GB, 34359738368 字节,67108864 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/sda:31.5 GB, 31457280000 字节,61440000 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0xa4ed694e 设备 Boot Start End Blocks Id System /dev/sda1 1 4294967295 2147483647+ ee GPT # 第二步,挂载,确保:/mnt/aiguozhe目录存在 # 这里就出现了问题 [root@zhixi ~]# mount /dev/sda /mnt/aiguozhe/ mount: /dev/sda 写保护,将以只读方式挂载 [root@zhixi ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 6.3G 0 6.3G 0% /dev tmpfs 6.3G 0 6.3G 0% /dev/shm tmpfs 6.3G 26M 6.3G 1% /run tmpfs 6.3G 0 6.3G 0% /sys/fs/cgroup /dev/mapper/centos-root 430G 12G 418G 3% / /dev/nvme0n1p2 2.0G 222M 1.8G 11% /boot /dev/nvme0n1p1 2.0G 12M 2.0G 1% /boot/efi tmpfs 1.3G 0 1.3G 0% /run/user/0 /dev/sda 4.4G 4.4G 0 100% /mnt/aiguozhe # 第三步:解挂 [root@zhixi ~]# umount /dev/sda # 第四步:重新格式化磁盘 [root@zhixi ~]# mkfs.ext4 /dev/sda mke2fs 1.42.9 (28-Dec-2013) /dev/sda is entire device, not just one partition! 无论如何也要继续? (y,n) y 文件系统标签= OS type: Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1921360 inodes, 7680000 blocks 384000 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=2155872256 235 block groups 32768 blocks per group, 32768 fragments per group 8176 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 # 第五步,查看磁盘,发现跟之前的不一样了 [root@zhixi ~]# fdisk -l WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion. 磁盘 /dev/nvme0n1:500.1 GB, 500107862016 字节,976773168 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:gpt Disk identifier: FAC2AB11-FB49-4CCF-B9B8-FD132C517AB4 # Start End Size Type Name 1 2048 4196351 2G EFI System EFI System Partition 2 4196352 8390655 2G Microsoft basic 3 8390656 976773119 461.8G Linux LVM 磁盘 /dev/mapper/centos-root:461.4 GB, 461448937472 字节,901267456 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/mapper/centos-swap:34.4 GB, 34359738368 字节,67108864 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/sda:31.5 GB, 31457280000 字节,61440000 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 # 第六步,挂载 [root@zhixi ~]# mount /dev/sda /mnt/aiguozhe/ [root@zhixi ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 6.3G 0 6.3G 0% /dev tmpfs 6.3G 0 6.3G 0% /dev/shm tmpfs 6.3G 26M 6.3G 1% /run tmpfs 6.3G 0 6.3G 0% /sys/fs/cgroup /dev/mapper/centos-root 430G 12G 418G 3% / /dev/nvme0n1p2 2.0G 222M 1.8G 11% /boot /dev/nvme0n1p1 2.0G 12M 2.0G 1% /boot/efi tmpfs 1.3G 0 1.3G 0% /run/user/0 /dev/sda 29G 45M 28G 1% /mnt/aiguozhe
mount: 未知的文件系统类型“ntfs”,问题解决
在Windows下写入文件,想在Linux下挂载,然后读取。
如果在Linux系统中尝试挂载U盘时遇到“未知的文件系统类型“ntfs””的错误,这可能是因为缺少NTFS文件系统的支持。
解决此问题的方法是在Linux系统上安装ntfs-3g软件包。ntfs-3g是一个开源的NTFS文件系统驱动程序,它允许Linux系统读写NTFS分区。
yum -y install ntfs-3g
然后重新挂载即可~
发送邮件
一、安装mailx发送邮件工具
yum -y install mailx
二、编辑邮件发送服务器地址:vim /etc/mail.rc
# 1、设置发件人地址 set from =zhang_zhixi@qq.com # 2、设置SMTP服务器地址 set smtp=smtp.qq.com # 3、设置SMTP验证的用户名(通常是发件人的邮箱地址) set smtp-auth-user=zhang_zhixi@qq.com # 4、设置SMTP验证的密码(在这里是发件人的QQ邮箱授权码) set smtp-auth-password=xxxxxx # 5、禁用对SMTP服务器的SSL证书验证 set ssl-verify=ignore # 6、设置NSS配置目录的路径,NSS是用于管理证书和密钥的库 set nss-config-dir=/root/.certs # 7、设置SMTP验证方法为“login”
三、测试发送邮件
echo "Hello" | mail -v -s "test" 1820712542@qq.com
邮件发送一些命令
1) 无正文邮件 mail -s "主题" 收件人邮箱地址 2) 有正文邮件 mail -s "主题" 收件人邮箱地址 < 文件[邮件正文.txt] echo "邮件正文" | mail -s 邮件主题 收件人邮箱地址 cat 邮件正文.txt | mail -s 邮件主题 收件人邮箱地址 3) 带附件 echo "邮件正文" | mailx -s "邮件主题" -a 附件 收件人邮箱地址 mail -s "邮件主题" -a 附件 收件人邮箱地址 < 文件[邮件正文.txt]
查询当前服务器的公网IP
curl ifconfig.me
自动登录-免输密码:expect
expect主要应用于自动化交互式操作的场景,借助Expect处理交互的命令。
可以将交互过程如:ssh登录,ftp登录等写在一个脚本上,使之自动化完成。尤其适用于需要对多台服务器执行相同操作的环境中,可以大大提高系统管理人员的工作效率。
安装:
使用命令:whereis expect 查看是否安装了expect,如果没有安装,使用命令:yum -y install expect 进行安装即可
使用:
vim auto_login.sh
#!/usr/bin/expect -f set timeout 30 set host "服务器IP" set user "用户名" set password "密码" set port "22" spawn ssh $user@$host -p $port expect { "yes/no" { send "yes\r" exp_continue } "password:" { send "$password\r" } } interact
执行shell脚本即可:
chmod +x auto_login.sh ./auto_login.sh
设置程序开机自启
https://www.cnblogs.com/zhangzhixi/p/16836498.html
fish:并且功能丰富的 shell
安装:yum -y install fish
使用:fish
退出:exit
查看系统信息-精简版
echo -e \ " 操作系统:$(cat /etc/redhat-release)\n\ 内核版本:$(uname -r)\n\ CPU 信息:$(lscpu | grep "Model name" | head -n1 | cut -d: -f2-)\n\ 核心数:$(cat /proc/cpuinfo | grep "processor" | wc -l)\n\ 内存信息:$(free -h | awk 'NR==2 {print $2}')\n\ 磁盘信息:总容量:$(df -h / | awk 'NR==2{print $2}'), 剩余容量:$(df -h / | awk 'NR==2{print $4}')\ "
echo "操作系统:$(lsb_release -d | cut -f2-)" echo "内核版本:$(uname -r)" echo "CPU 信息:$(grep " model name " /proc/cpuinfo | head -n1 | cut -d: -f2-)" echo "内存信息:$(free -h | awk 'NR==2 {print $2}')" echo "磁盘信息:总容量:$(df -h / | awk 'NR==2{print $2}'), 剩余容量:$(df -h / | awk 'NR==2{print $4}')"
下载更新高版本GCC(Centos7)
yum -y install centos-release-scl yum -y install devtoolset-9- gcc devtoolset-9- gcc -c++ devtoolset-9-binutils #这句是临时的 scl enable devtoolset-9 bash #修改环境变量(永久) echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile #刷新配置 source /etc/profile #查看gcc版本 gcc - v
更换yum源为阿里的yum源(Centos7)
参考地址:https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11lKvxuq
# 查看yum源信息 yum repolist #1、备份 mv /etc/yum .repos.d /CentOS-Base .repo /etc/yum .repos.d /CentOS-Base .repo.backup # 2、下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/ wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # 3、清理缓存 yum clean all # 4、重新生成缓存 yum makecache
yum安装程序报错:One of the configured repositories failed (Unknown)
https://www.cnblogs.com/oboth-zl/p/16952330.html
yum安装软件时报“没有可用的软件包异常”
当在Linux系统中使用yum安装软件时提示 “没有可用软件包”时,代表在linux系统yum源中已经没有对应的安装包了,这时,我们需要安装EPEL。
EPEL(Extra Packages for Enterprise Linux),企业版Linux额外包,RHEL分布非标准包的社区类库。安装如下:
yum install -y epel-release
yum安装常用软件提示:没有可用软件包 httpd
vim /etc/yum.conf
然后执行安装命令即可:
yum -y install httpd
vim显示行号
临时
在命令行输入:set number
永久
在用户的家目录创建vimrc文件,并追加:set number
vim ~/.vimrc
服务进程相关(systemctl)
LinuxSystemctl是一个系统管理守护进程、工具和库的集合,用于取代System V、service和chkconfig命令。
初始进程主要负责控制systemd系统和服务管理器。
通过systemctl --help可以看到该命令主要分为:查询或发送控制命令给systemd服务,管理单元服务的命令,服务文件的相关命令,任务、环境、快照相关命令,systemd服务的配置重载,系统开机关机相关的命令
1、列出所有可用单元 systemctl list-unit-files 2、列出所有运行中单元 systemctl list-units 3、列出所有失败单元 systemctl –failed 4、检查某个单元(如 mysqld)是否启用 systemctl is -enabled mysqld 5、列出所有服务 systemctl list-unit-files –type=service 6、Linux中如何启动、重启、停止、重载服务以及检查服务状态 、开机自启。(如 mysql) systemctl start mysqld systemctl restart mysqld systemctl stop mysqld systemctl reload mysqld systemctl status mysqld systemctl enable mysqld 注意:当我们使用systemctl的start,restart,stop和reload命令时,终端不会输出任何内容,只有status命令可以打印输出。 7、如何激活服务并在开机时启用或禁用服务(即系统启动时自动启动mysql服务) systemctl is -active mysqld(查看状态) systemctl enable mysqld (设置开机自启) systemctl disable mysqld (取消开机自启) 8、检查某个服务的所有配置细节 systemctl show mysqld 9、 重启、停止、挂起、休眠系统或使系统进入混合睡眠 systemctl reboot systemctl halt systemctl suspend systemctl hibernate systemctl hybrid-sleep
setfacl与getfacl:linux 下恢复文件权限设置,Linux系统文件权限的备份与恢复:
今天发生了一个事故,使用命令:chmod -R 777 /u01,不小心给Oracle的目录以及子目录全部设置成了777权限,导致了Oracle无法正常访问,请教了第三方的大佬这才找到解决的办法
以下简单的说明下这两个命令的使用,还有切记对于权限问题,一定要万千小心:
setfacl——设定文件访问控制列表 语法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ... -m, --modify=acl 更改文件的访问控制列表 -M, --modify-file=file 从文件读取访问控制列表条目更改 -x, --remove=acl 根据文件中访问控制列表移除条目 -X, --remove-file=file 从文件读取访问控制列表条目并删除 -b, --remove-all 删除所有扩展访问控制列表条目 -k, --remove- default 移除默认访问控制列表 -- set =acl 设定替换当前的文件访问控制列表 -- set -file=file 从文件中读取访问控制列表条目设定 --mask 重新计算有效权限掩码 -n, --no-mask 不重新计算有效权限掩码 -d, -- default 应用到默认访问控制列表的操作 -R, --recursive 递归操作子目录 -L, --logical 依照系统逻辑,跟随符号链接 -P, --physical 依照自然逻辑,不跟随符号链接 --restore=file 恢复访问控制列表,和“getfacl -R”作用相反 --test 测试模式,并不真正修改访问控制列表属性 -v, --version 显示版本并退出 -h, --help 显示本帮助信息 getfacl ——获取文件访问控制列表 语法: getfacl [-aceEsRLPtpndvh] 文件 ... -a, --access 仅显示文件访问控制列表 -d, -- default 仅显示默认的访问控制列表 -c, --omit-header 不显示注释表头 -e, --all-effective 显示所有的有效权限 -E, --no-effective 显示无效权限 -s, --skip- base 跳过只有基条目( base entries)的文件 -R, --recursive 递归显示子目录 -L, --logical 逻辑遍历(跟随符号链接) -P, --physical 物理遍历(不跟随符号链接) -t, --tabular 使用制表符分隔的输出格式 -n, --numeric 显示数字的用户/组标识 -p, --absolute-names 不去除路径前的 '/' 符号 -v, --version 显示版本并退出 -h, --help 显示本帮助信息
测试:
1、在tmp目录下新建test.txt文件,查看tmp目录下所有文件的权限
2、备份/tmp及其子文件夹下所有文件的权限信息
3、将/tmp及其子文件夹下所有文件的权限全部设置为777
4、恢复/tmp及其子文件夹下所有文件的权限
[root@zhixi tmp]# touch test.txt [root@zhixi tmp]# ll total 0 drwxr-xr-x 2 root root 50 Jan 27 15:49 aegis_dfir -rw------- 1 root root 0 Jan 27 10:49 AliyunAssistClientSingleLock.lock drwx------ 3 root root 17 Jan 27 10:49 systemd-private-3aa83314b1f44096b13b6664046cfef6-chronyd.service-7shkni -rw-r--r-- 1 root root 0 Jan 27 22:40 test.txt [root@zhixi tmp]# getfacl -pR /tmp/ > /tmp/facl.bak [root@zhixi tmp]# ll total 4 drwxr-xr-x 2 root root 50 Jan 27 15:49 aegis_dfir -rw------- 1 root root 0 Jan 27 10:49 AliyunAssistClientSingleLock.lock -rw-r--r-- 1 root root 885 Jan 27 22:40 facl.bak drwx------ 3 root root 17 Jan 27 10:49 systemd-private-3aa83314b1f44096b13b6664046cfef6-chronyd.service-7shkni -rw-r--r-- 1 root root 0 Jan 27 22:40 test.txt [root@zhixi tmp]# chmod -R 777 /tmp/* [root@zhixi tmp]# ll total 4 drwxrwxrwx 2 root root 50 Jan 27 15:49 aegis_dfir -rwxrwxrwx 1 root root 0 Jan 27 10:49 AliyunAssistClientSingleLock.lock -rwxrwxrwx 1 root root 885 Jan 27 22:40 facl.bak drwxrwxrwx 3 root root 17 Jan 27 10:49 systemd-private-3aa83314b1f44096b13b6664046cfef6-chronyd.service-7shkni -rwxrwxrwx 1 root root 0 Jan 27 22:40 test.txt [root@zhixi tmp]# setfacl --restore=/tmp/facl.bak [root@zhixi tmp]# ll total 4 drwxr-xr-x 2 root root 50 Jan 27 15:49 aegis_dfir -rw------- 1 root root 0 Jan 27 10:49 AliyunAssistClientSingleLock.lock -rw-r--r-- 1 root root 885 Jan 27 22:40 facl.bak drwx------ 3 root root 17 Jan 27 10:49 systemd-private-3aa83314b1f44096b13b6664046cfef6-chronyd.service-7shkni -rw-r--r-- 1 root root 0 Jan 27 22:40 test.txt
date,cal,bc 时间、日期、计算器
- 显示日期与时间的命令: date
- 显示日历的命令: cal
- 简单好用的计算器:bc
cp:复制
Linux cp(英文全拼:copy file)命令主要用于复制文件或目录。
参数说明:
- -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
- -s:复制成符号链接文件,这里所说的链接相当于 Windows 系统中的快捷方式。注意:这是因为 "-s" 选项在 cp 命令中用于创建符号链接,但不能用于复制目录。
- 需要复制目录使用以下命令:ln -s 目录/文件 目标目录
- -f:覆盖已经存在的目标文件而不给出提示。
- -i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
- -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
- -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
- -l:不复制文件,只是生成链接文件。
生成快捷方式:
需要注意的是,如果将软连接放到其他文件夹(不是相同文件夹),那么需要指定原文件位置(使用绝对路径)
或者可以通过ln命令进行实现软链接:
复制当前目录下包含子目录下的指定类型文件
第一种(常规):
cp -r $(find . -name "*.war" ) /root
第二种(针对目录包含空格的):
find . -name "*.war" > filelist.txt cat filelist.txt | xargs -I {} cp {} /root
scp:命令用于Linux之间复制文件和目录
https://www.cnblogs.com/zhangzhixi/p/16352319.html#_label7
cat、more……文件内容查阅
chattr和lsattr:设置文件属性(无法删除)
chattr命令用于改变文件属性。
这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:
- a:让文件或目录仅供附加用途。(只可以追加)
- b:不更新文件或目录的最后存取时间。
- c:将文件或目录压缩后存放。
- d:将文件或目录排除在倾倒操作之外。
- i:不得任意更动文件或目录(不能追加,编辑,删除)
- s:保密性删除文件或目录。
- S:即时更新文件或目录。
- u:预防意外删除。
实例:
用chattr命令防止系统中某个关键文件被修改:
chattr +i /etc/resolv .conf lsattr /etc/resolv .conf
会显示如下属性(如果要删除这个文件,就需要将i属性给去除):
----i-------- /etc/resolv .conf
让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:
chattr +a /var/log/messages
删除文件:将该文件的i属性取消:
chattr -i /etc/resolv .conf
which,whereis,find: 文件查找
- 寻找“执行文件”(which):
#which ls
- 寻找特定文件(whereis):
[root@zhixi /] # whereis ifconfig ifconfig : /usr/sbin/ifconfig /usr/share/man/man8/ifconfig .8.gz
- 查找指定文件(find)
从www目录下开始找,名称为index.html的文件: #find /www/ -name index.html 从指定目录 /www/ ,找到大于1M的文件 #find /www/ -size +1000k 将当前目录及其子目录下所有文件后缀为 .c 的文件列出来: # find . -name "*.c" 将当前目录及其子目录中的所有文件列出: # find . -type f 将当前目录及其子目录下所有最近 20 天内更新过的文件列出: # find . -ctime -20
tar:压缩跟解压缩
linux中 tar 命令用法 把常用的 tar 解压命令总结下,当作备忘: tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。 -z:有 gzip 属性的 -j:有bz2属性的 -Z:有compress属性的 - v :显示所有过程 -O:将文件解开到标准输出 下面的参数-f是必须的 -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。 # tar -cf all.tar *.jpg 这条命令是将所有.jpg的文件打成一个名为all. tar 的包。-c是表示产生新的包,-f指定包的文件名。 # tar -rf all.tar *.gif 这条命令是将所有.gif的文件增加到all. tar 的包里面去。-r是表示增加文件的意思。 # tar -uf all.tar logo.gif 这条命令是更新原来 tar 包all. tar 中logo.gif文件,-u是表示更新文件的意思。 # tar -tf all.tar 这条命令是列出all. tar 包中所有文件,-t是列出文件的意思 # tar -xf all.tar 这条命令是解出all. tar 包中所有文件,-x是解开的意思 压缩 tar –cvf jpg. tar *.jpg 将目录里所有jpg文件打包成 tar .jpg tar –czf jpg. tar .gz *.jpg 将目录里所有jpg文件打包成jpg. tar 后,并且将其用 gzip 压缩,生成一个 gzip 压缩过的包,命名为jpg. tar .gz tar –cjf jpg. tar .bz2 *.jpg 将目录里所有jpg文件打包成jpg. tar 后,并且将其用 bzip2 压缩,生成一个 bzip2 压缩过的包,命名为jpg. tar .bz2 tar –cZf jpg. tar .Z *.jpg 将目录里所有jpg文件打包成jpg. tar 后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg. tar .Z rar a jpg.rar *.jpg rar格式的压缩,需要先下载rar for linux zip jpg.zip *.jpg zip格式的压缩,需要先下载zip for linux 解压 tar -xvf mysql. tar -C /opt/test1/zzx 解压到指定目录下 tar –xvf file . tar 解压 tar 包 tar -xzvf file . tar .gz 解压 tar .gz tar -xjvf file . tar .bz2 解压 tar .bz2 tar –xZvf file . tar .Z 解压 tar .Z unrar e file .rar 解压rar unzip file .zip 解压zip 总结 *. tar 用 tar –xvf 解压 *.gz 用 gzip -d或者gunzip 解压 *. tar .gz和*.tgz 用 tar –xzf 解压 *.bz2 用 bzip2 -d或者用bunzip2 解压 *. tar .bz2用 tar –xjf 解压 *.Z 用 uncompress 解压 *. tar .Z 用 tar –xZf 解压 *.rar 用 unrar e解压 *.zip 用 unzip 解压 linux下最常用的打包程序就是 tar 了,使用 tar 程序打出来的包我们常称为 tar 包, tar 包文件的命令通常都是以. tar 结尾的。生成 tar 包后,就可以用其它的程序来进行压缩。 1.命令格式: tar [必要参数][选择参数][文件] 2.命令功能: 用来压缩和解压文件。 tar 本身不具有压缩功能。他是调用压缩功能实现的 3.命令参数: 必要参数有如下: -A 新增压缩文件到已存在的压缩 -B 设置区块大小 -c 建立新的压缩文件 -d 记录文件的差别 -r 添加文件到已经压缩的文件 -u 添加改变了和现有的文件到已经存在的压缩文件 -x 从压缩的文件中提取文件 -t 显示压缩文件的内容 -z 支持 gzip 解压文件 -j 支持 bzip2 解压文件 -Z 支持compress解压文件 - v 显示操作过程 -l 文件系统边界设置 -k 保留原有文件不覆盖 -m 保留文件不被覆盖 -W 确认压缩文件的正确性 可选参数如下: -b 设置区块数目 -C 切换到指定目录 -f 指定压缩文件 --help 显示帮助信息 --version 显示版本信息 4.常见解压/压缩命令 tar 解包: tar xvf FileName. tar 打包: tar cvf FileName. tar DirName (注: tar 是打包,不是压缩!) .gz 解压1:gunzip FileName.gz 解压2: gzip -d FileName.gz 压缩: gzip FileName . tar .gz 和 .tgz 解压: tar zxvf FileName. tar .gz 压缩: tar zcvf FileName. tar .gz DirName .bz2 解压1: bzip2 -d FileName.bz2 解压2:bunzip2 FileName.bz2 压缩: bzip2 -z FileName . tar .bz2 解压: tar jxvf FileName. tar .bz2 压缩: tar jcvf FileName. tar .bz2 DirName .bz 解压1: bzip2 -d FileName.bz 解压2:bunzip2 FileName.bz 压缩:未知 . tar .bz 解压: tar jxvf FileName. tar .bz 压缩:未知 .Z 解压:uncompress FileName.Z 压缩:compress FileName . tar .Z 解压: tar Zxvf FileName. tar .Z 压缩: tar Zcvf FileName. tar .Z DirName .zip 解压:unzip FileName.zip 压缩:zip FileName.zip DirName .rar 解压:rar x FileName.rar 压缩:rar a FileName.rar DirName 5.使用实例 实例1:将文件全部打包成 tar 包 命令: tar -cvf log. tar log2012.log tar -zcvf log. tar .gz log2012.log tar -jcvf log. tar .bz2 log2012.log
修改Host主机名称:
方法一:
[root@xxxx]:如果不想主机名称显示的这么长,可以自定义主机名称:
#hostnamectl set-hostname hostname
方法二:
1、打开文件:vim /etc/sysconfig/network
2、插入:HOSTNAME=主机名
3、重启:reboot
hostadmin :查看系统主机名称
Hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,
系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,
则系统再会将网址提交DNS域名解析服务器进行IP地址的解析,如果发现是被屏蔽的IP或域名,就会禁止打开此网页!
查看本机的host文件: #cat /etc/hosts
history :查看历史命令
见名知意:历史(history)
输入: #export HISTTIMEFORMAT='%F %T' 表示激活显示行号
输入: #history 查看服务器的历史命令
如需永久显示执行时间需要修改.bash.rc文件,参考:https://blog.csdn.net/evil_wdpp/article/details/91873771
netstat:网络连接命令
先说我遇到的问题:启动SpringBoot项目时指定端口为8080,阿里云也已经开放安全组规则,但是网站还是无法访问,所以就想到了端口有可能被占用的情况。
- 查看所有端口
netstat -ntpl
- 查看端口对应的应用程序
#lsof -i:端口号
#ps -ef|grep 应用程序名
- 杀死对应的应用程序(达到关闭端口的作用)
kill -9 应用PID
- 强制杀死指定端口进程(最直接)
sudo fuser -k -n tcp 端口号
开放/移除端口
1、开启防火墙 systemctl start firewalld 2、开放指定端口 firewall-cmd --zone= public --add-port=9999/tcp --permanent 命令含义: --zone #作用域 --add-port=1935/tcp #添加端口,格式为:端口/通讯协议 --permanent #永久生效,没有此参数重启后失效 #移除指定端口 firewall-cmd --zone= public --remove-port=3306/tcp --permanent 3、重启防火墙 firewall-cmd --reload 4、查看端口号 netstat -ntlp //查看当前所有tcp端口· netstat -ntulp |grep 9999 //查看所有1935端口使用情况· 5. 查看所有已开放的端口 firewall-cmd --zone= public --list-ports
*如果端口没有被使用的话,那么就不会有监听到(不显示)
top - 整机性能查看
参数说明:
- d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
- q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
- c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
- S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
- s : 安全模式,将交谈式指令取消, 避免潜在的危机
- i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
- n : 更新的次数,完成后将会退出 top
- b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内
主要看load average, CPU, MEN三部分
load average表示系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
load average: 如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了
uptime - 系统性能命令的精简版
- 当前时间 23::52:36
- 系统已运行的时间 1:51min
- 当前在线用户 2 user
- 平均负载:0.16, 0.13, 0.09,最近1分钟、5分钟、15分钟系统的负载
vmstat:CPU查看
procs
- r:运行和等待的CPU时间片的进程数,原则上1核的CPU的运行队列不要超过2,整个系统的运行队列不超过总核数的2倍,否则代表系统压力过大,我们看蘑菇博客测试服务器,能发现都超过了2,说明现在压力过大
- b:等待资源的进程数,比如正在等待磁盘I/O、网络I/O等
cpu
- us:用户进程消耗CPU时间百分比,us值高,用户进程消耗CPU时间多,如果长期大于50%,优化程序
- sy:内核进程消耗的CPU时间百分比
- us + sy 参考值为80%,如果us + sy 大于80%,说明可能存在CPU不足,从上面的图片可以看出,us + sy还没有超过百分80,因此说明蘑菇博客的CPU消耗不是很高
- id:处于空闲的CPU百分比
- wa:系统等待IO的CPU时间百分比
- st:来自于一个虚拟机偷取的CPU时间比
2 3 表示:每隔2s打印一次数据,打印3次结束
free:查看内存状态
参数:
- -b 以Byte为单位显示内存使用情况。
- -k 以KB为单位显示内存使用情况。
- -m 以MB为单位显示内存使用情况。
-
-h 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位有:
B = bytes K = kilos M = megas G = gigas T = teras
- -o 不显示缓冲区调节列。
- -s<间隔秒数> 持续观察内存使用状况。
- -t 显示内存总和列。
- -V 显示版本信息。
查看内存使用情况:
每2s执行一次命令:
df:硬盘查看命令
Size:总大小
User:已使用
Avail:剩余
Use:已使用的内存百分比
curl:文件传输
curl命令来自于英文词组”CommandLine URL“的缩写,其功能是用于在Shell终端界面中基于URL规则进行的文件传输工作。curl是一款综合的传输工具,可以上传也可以下载,支持HTTP、HTTPS、FTP等三十余种常见协议。
示例:cur [参数] 网址
1、获取指定网页的源码:curl URL
2、打印指定网站的HTTP响应头信息:curl -i URL
3、发送请求:curl d JSON -X POST URL
curl不加参数默认发送的是get请求。
POST请求:curl -XPOST -d '{"name":"zhangsan"}' http://jsonplaceholder.typicode.com/posts
PUT请求:curl -XPUT -d '{"name":"zlisi}' http://jsonplaceholder.typicode.com/posts/1
DLETE请求:curl -XDELETE http://jsonplaceholder.typicode.com/posts/1
4、添加响应头:curl -XPOST -H 响应头 -d JSON URL
5、下载文件:curl -O URL
下载文件到当前文件夹[curl -O URL]:curl -O https://s2.loli.net/2022/01/05/l8nNYxIXBZpRt2P.jpg
下载文件后自定义文件名[curl -o filename URL]:curl -o test.jpg https://s2.loli.net/2022/01/05/l8nNYxIXBZpRt2P.jpg
限制下载速度[curl --limit-rate ]:curl --limit-rate 100k -o test111.jpg https://s2.loli.net/2022/01/05/l8nNYxIXBZpRt2P.jpg
支持断点续传[curl -C - -o filename URL]:curl -C - -o test222.jpg https://s2.loli.net/2022/01/05/l8nNYxIXBZpRt2P.jpg
6、获取更多的网页信息:curl -v URL
wget:下载网络资源
使用方法更curl的下载差不多,但是通过测试发现,效率是比curl要高,命令参考地址:https://www.linuxcool.com/wget
二、Linux基础命令
配置系统环境变量:~/.bashrc
前言:如何将:/usr/bin/mysql添加到环境变量,不然每次访问mysql都需要使用这条命令:/usr/bin/mysql -u root -p
1、编辑文件:~/.bashrc
vim ~/.bashrc
2、在文件的末尾添加以下一行代码
export PATH= "/usr/bin/mysql:$PATH"
3、重新加载配置文件
source ~/.bashrc
系统信息
cat /etc/redhat-release 显示安装的系统版本 getconf LONG_BIT 显示系统是多少位的(32/64bit) arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示CPU info的信息 cat /proc/interrupts 显示中断 cat /proc/meminfo 校验内存使用 cat /proc/swaps 显示哪些swap被使用 cat /proc/version 显示内核的版本 cat /proc/net/dev 显示网络适配器及统计 cat /proc/mounts 显示已加载的文件系统 lspci -tv 罗列 PCI 设备 lsusb -tv 显示 USB 设备 date 显示系统日期 cal 2007 显示2007年的日历表 date 041217002007.00 设置日期和时间 - 月日时分年.秒 clock -w 将时间修改保存到 BIOS
关机 (系统的关机、重启以及登出 )
shutdown -h now 关闭系统(1) init 0 关闭系统(2) telinit 0 关闭系统(3) shutdown -h hours:minutes & 按预定时间关闭系统 shutdown -c 取消按预定时间关闭系统 shutdown -r now 重启(1) reboot 重启(2) logout 注销
文件和目录
cd /home 进入 '/ home' 目录' cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd 进入个人的主目录 cd ~user1 进入个人的主目录 cd - 返回上次所在的目录 pwd 显示工作路径 ls 查看目录中的文件 ls -F 查看目录中的文件 ls -l 显示文件和目录的详细资料 ls -a 显示隐藏文件 ls *[0-9]* 显示包含数字的文件名和目录名 tree 显示文件和目录由根目录开始的树形结构(1) lstree 显示文件和目录由根目录开始的树形结构(2) mkdir dir1 创建一个叫做 'dir1' 的目录' mkdir dir1 dir2 同时创建两个目录 mkdir -p /tmp/dir1/dir2 创建一个目录树 rm -f file1 删除一个叫做 'file1' 的文件' rmdir dir1 删除一个叫做 'dir1' 的目录' rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容 rm -rf dir1 dir2 同时删除两个目录及它们的内容 mv dir1 new_dir 重命名/移动 一个目录 cp file1 file2 复制一个文件 cp dir/* . 复制一个目录下的所有文件到当前工作目录 cp -a /tmp/dir1 . 复制一个目录到当前工作目录 cp -a dir1 dir2 复制一个目录 ln -s file1 lnk1 创建一个指向文件或目录的软链接 ln file1 lnk1 创建一个指向文件或目录的物理链接 touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm) file file1 outputs the mime type of the file as text iconv -l 列出已知的编码 iconv -f fromEncoding -t toEncoding inputFile > outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding. find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" \; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick)
防火墙(基于Centos7)
1:查看防火状态 systemctl status firewalld service iptables status firewall-cmd --state systemctl list-unit-files|grep firewalld.service 2:暂时关闭防火墙 systemctl stop firewalld service iptables stop 3:永久关闭防火墙 systemctl disable firewalld chkconfig iptables off 4:重启防火墙 firewall-cmd --reload service iptables restart systemctl restart firewalld.service 5:禁止开机自启 systemctl disable firewalld.service chkconfig iptables off
文件搜索
find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录 find / -user user1 搜索属于用户 'user1' 的文件和目录 find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有 '.bin' 结尾的文件 find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件 find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件 find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限 find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备 locate \*.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令 whereis halt 显示一个二进制文件、源码或man的位置 which halt 显示一个二进制文件或可执行文件的完整路径
挂载一个文件系统
mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 '/ mnt/hda2' 已经存在 umount /dev/hda2 卸载一个叫做hda2的盘 - 先从挂载点 '/ mnt/hda2' 退出 fuser -km /mnt/hda2 当设备繁忙时强制卸载 umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用 mount /dev/fd0 /mnt/floppy 挂载一个软盘 mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrom mount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrom mount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrom mount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件 mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统 mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备 mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享
磁盘空间
df -h 显示已经挂载的分区列表 ls -lSr |more 以尺寸大小排列文件和目录 du -sh dir1 估算目录 'dir1' 已经使用的磁盘空间' du -sk * | sort -rn 以容量大小为依据依次显示文件和目录的大小 rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n 以大小为依据依次显示已安装的rpm包所使用的空间 (fedora, redhat类系统) dpkg-query -W -f= '${Installed-Size;10}t${Package}n' | sort -k1,1n 以大小为依据显示已安装的deb包所使用的空间 (ubuntu, debian类系统)
用户和群组
groupadd group_name 创建一个新用户组 groupdel group_name 删除一个用户组 groupmod -n new_group_name old_group_name 重命名一个用户组 useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 "admin" 用户组的用户 useradd user1 创建一个新用户 userdel user1 删除一个用户(只删除了用户,并未删除用户的配置文件) userdel -r user1 删除了用户和用户的配置文件(*) usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性 passwd 修改口令 passwd user1 修改一个用户的口令 (只允许root执行) chage -E 2005-12-31 user1 设置用户口令的失效期限 pwck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户 grpck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组 newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组
批量添加用户
1、创建用户组
groupadd mixky
拿到组id(1003): cat /etc/group
2、编辑用户文件
vim /home/user_name.txt
user001::1101:1003::/home/user001:/bin/bash user002::1102:1003::/home/user002:/bin/bash user003::1103:1003::/home/user003:/bin/bash user004::1104:1003::/home/user004:/bin/bash user005::1105:1003::/home/user005:/bin/bash
参数解释:
- user001 # 用户名
- # 第1个冒号(:)表示密码被设置为加密形式存储,这里为空字符串表示没有密码
- 1101 # 用户ID (UID)
- 1103 # 主组ID (GID)
- # 第2个冒号(:)表示用户说明信息为空
- /home/user001 # 用户主目录
- /bin/bash # 用户默认Shell
3、编辑用户密码文件
vim /home/user_pwd.txt
user001:123456 user002:123456 user003:123456 user004:123456 user005:123456
4、创建用户:newusers
newusers < /home/user_name.txt
5、取消 shadow password 功能
将 /etc/shadow 产生的 shadow 密码解码,然后回写到 /etc/passwd 中,并将/etc/shadow的shadow密码栏删掉。这是为了方便下一步的密码转换工作
pwunconv
6、设置用户密码
chpasswd < /home/user_pwd.txt
7、恢复shadow
pwconv
8、测试
[root@MiWiFi-R3-srv home]# whoami root [root@MiWiFi-R3-srv home]# su - user001 上一次登录:日 4月 23 09:58:51 CST 2023pts/0 上 -bash-4.2$ whoami user001 -bash-4.2$ pwd /home/user001
文件的权限 - 使用 "+" 设置权限,使用 "-" 用于取消
ls -lh 显示权限 ls /tmp | pr -T5 -W$COLUMNS 将终端划分成5栏显示 chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限 chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限 chown user1 file1 改变一个文件的所有人属性 chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性 chgrp group1 file1 改变文件的群组 chown user1:group1 file1 改变一个文件的所有人和群组属性 find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件 chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限 chmod u-s /bin/file1 禁用一个二进制文件的 SUID位 chmod g+s /home/ public 设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的 chmod g-s /home/ public 禁用一个目录的 SGID 位 chmod o+t /home/ public 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件 chmod o-t /home/ public 禁用一个目录的 STIKY 位
文件的特殊属性 - 使用 "+" 设置权限,使用 "-" 用于取消
chattr +a file1 只允许以追加方式读写文件 chattr +c file1 允许这个文件能被内核自动压缩/解压 chattr +d file1 在进行文件系统备份时,dump程序将忽略这个文件 chattr +i file1 设置成不可变的文件,不能被删除、修改、重命名或者链接 chattr +s file1 允许一个文件被安全地删除 chattr +S file1 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘 chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件 lsattr 显示特殊的属性
打包和压缩文件
bunzip2 file1.bz2 解压一个叫做 'file1.bz2' 的文件 bzip2 file1 压缩一个叫做 'file1' 的文件 gunzip file1.gz 解压一个叫做 'file1.gz' 的文件 gzip file1 压缩一个叫做 'file1' 的文件 gzip -9 file1 最大程度压缩 rar a file1.rar test_file 创建一个叫做 'file1.rar' 的包 rar a file1.rar file1 file2 dir1 同时压缩 'file1' , 'file2' 以及目录 'dir1' rar x file1.rar 解压rar包 unrar x file1.rar 解压rar包 tar -cvf archive.tar file1 创建一个非压缩的 tarball tar -cvf archive.tar file1 file2 dir1 创建一个包含了 'file1' , 'file2' 以及 'dir1' 的档案文件 tar -tf archive.tar 显示一个包中的内容 tar -xvf archive.tar 释放一个包 tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下 tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包 tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包 tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包 tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包 zip file1.zip file1 创建一个zip格式的压缩包 zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包 unzip file1.zip 解压一个zip格式压缩包
tar
其实最简单的使用 tar 就只要记忆下面的方式即可:
压 缩: time tar -zpcvf [压缩的文件.tar.gz] [被压缩的文件或目录名称]
查 询/预览:time tar -tvf [被压缩的文件或目录名称]
解压缩:time tar -zxvf etc.tar.gz [-C 欲解压缩的目录]
time tar -zpcvf etc.tar.gz /etc # 压缩文件/目录 tar -tvf etc.tar.gz # 预览压缩文件内容 tar -tvf etc.tar.gz | grep 'reso*' # 检索压缩包中的文件名 tar -zxvf etc.tar.gz etc/resolv.conf # 单独解压出来此文件,因为在打包时候没有/,所以此处不能写/etc time tar -zxvf etc.tar.gz #解压文件
选项与参数: -c :创建打包文件,可搭配 -v 来察看过程中被打包的文件名(filename) -t :察看打包文件的内容含有哪些文件名,重点在察看“文件名”就是了; -x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开 特别留意的是, -c, -t, -x 不可同时出现在一串命令行中。 -z :通过 gzip 的支持进行压缩/解压缩:此时文件名最好为 *.tar.gz -j :通过 bzip2 的支持进行压缩/解压缩:此时文件名最好为 *.tar.bz2 -J :通过 xz 的支持进行压缩/解压缩:此时文件名最好为 *.tar.xz 特别留意, -z, -j, -J 不可以同时出现在一串命令行中 -v :在压缩/解压缩的过程中,将正在处理的文件名显示出来! -f filename:-f 后面要立刻接要被处理的文件名!建议 -f 单独写一个选项啰!(比较不会忘记) -C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。 其他后续练习会使用到的选项介绍: -p(小写) :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件 -P(大写) :保留绝对路径,亦即允许备份数据中含有根目录存在之意; --exclude=FILE:在压缩的过程中,不要将 FILE 打包!
RPM 包 - (Fedora, Redhat及类似系统)
rpm -ivh package.rpm 安装一个rpm包 rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告 rpm -U package.rpm 更新一个rpm包但不改变其配置文件 rpm -F package.rpm 更新一个确定已经安装的rpm包 rpm -e package_name.rpm 删除一个rpm包 rpm -qa 显示系统中所有已经安装的rpm包 rpm -qa | grep httpd 显示所有名称中包含 "httpd" 字样的rpm包 rpm -qi package_name 获取一个已安装包的特殊信息 rpm -qg "System Environment/Daemons" 显示一个组件的rpm包 rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表 rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表 rpm -q package_name --whatrequires 显示与一个rpm包存在依赖关系的列表 rpm -q package_name --whatprovides 显示一个rpm包所占的体积 rpm -q package_name --scripts 显示在安装/删除期间所执行的脚本l rpm -q package_name --changelog 显示一个rpm包的修改历史 rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包所提供 rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表 rpm --import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书 rpm --checksig package.rpm 确认一个rpm包的完整性 rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性 rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间 rpm -Va 检查系统中所有已安装的rpm包- 小心使用 rpm -Vp package.rpm 确认一个rpm包还未安装 rpm2cpio package.rpm | cpio --extract --make-directories *bin* 从一个rpm包运行可执行文件 rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm 从一个rpm源码安装一个构建好的包 rpmbuild --rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包
YUM 软件包升级器 - (Fedora, RedHat及类似系统)
yum install package_name 下载并安装一个rpm包 yum localinstall package_name.rpm 将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系 yum update package_name.rpm 更新当前系统中所有安装的rpm包 yum update package_name 更新一个rpm包 yum remove package_name 删除一个rpm包 yum list 列出当前系统中安装的所有包 yum search package_name 在rpm仓库中搜寻软件包 yum clean packages 清理rpm缓存删除下载的包 yum clean headers 删除所有头文件 yum clean all 删除所有缓存的包和头文件
查看文件内容
cat file1 从第一个字节开始正向查看文件的内容 tac file1 从最后一行开始反向查看一个文件的内容 more file1 查看一个长文件的内容 less file1 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作 head -2 file1 查看一个文件的前两行 tail -2 file1 查看一个文件的最后两行 tail -f / var /log/messages 实时查看被添加到一个文件中的内容
文本处理(cat、sed)
grep Aug /var/log/messages 在文件 '/var/log/messages' 中查找关键词 "Aug" grep ^Aug /var/log/messages 在文件 '/var/log/messages' 中查找以 "Aug" 开始的词汇 grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行 grep Aug -R /var/log/ * 在目录 '/var/log' 及随后的目录中搜索字符串 "Aug" # s:这个选项代表"substitute"(替换)。 # g:这个选项代表"global"(全局)。 sed -i 's/string1/string2/g' example.txt 将example.txt文件中的 "string1" 替换成 "string2" #删除xml文件中所有的注释以及空白行 sed -i '/^\s*$/d; //d' server.xml # 删除nginx.conf中所有注释以及空白行 sed -i '/^[[:space:]]*#/d;/^[[:space:]]*$/d' nginx.conf echo 'esempio' | tr '[:lower:]' '[:upper:]' 合并上下单元格内容 sed -e '1d' result.txt 从文件example.txt 中排除第一行 sed -n '/stringa1/p' 查看只包含词汇 "string1" 的行 sed -e 's/ *$//' example.txt 删除每一行最后的空白字符 sed -e 's/stringa1//g' example.txt 从文档中只删除词汇 "string1" 并保留剩余全部 sed -n '1,5p;5q' example.txt 查看从第一行到第5行内容 sed -n '5p;5q' example.txt 查看第5行 sed -e 's/00*/0/g' example.txt 用单个零替换多个零 cat -n file1 标示文件的行数 cat example.txt | awk 'NR%2==1' 删除example.txt文件中的所有偶数行 echo a b c | awk '{print $1}' 查看一行第一栏 echo a b c | awk '{print $1,$3}' 查看一行的第一和第三栏 paste file1 file2 合并两个文件或两栏的内容 paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用 "+" 区分 sort file1 file2 排序两个文件的内容 sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份) sort file1 file2 | uniq -u 删除交集,留下其他的行 sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件) comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容 comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容 comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分
字符设置和文件格式转换
dos2unix filedos.txt fileunix.txt 将一个文本文件的格式从MSDOS转换成UNIX unix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS recode ..HTML < page.txt > page.html 将一个文本文件转换成html recode -l | more 显示所有允许的转换格式
文件系统分析
badblocks -v /dev/hda1 检查磁盘hda1上的坏磁块 fsck /dev/hda1 修复/检查hda1磁盘上linux文件系统的完整性 fsck.ext2 /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性 e2fsck /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性 e2fsck -j /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性 fsck.ext3 /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性 fsck.vfat /dev/hda1 修复/检查hda1磁盘上fat文件系统的完整性 fsck.msdos /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性 dosfsck /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性
备份
dump -0aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的完整备份 dump -1aj -f /tmp/home0.bak /home 制作一个 '/home' 目录的交互式备份 restore - if /tmp/home0.bak 还原一个交互式备份 rsync -rogpav --delete /home /tmp 同步两边的目录 rsync -rogpav -e ssh --delete /home ip_address:/tmp 通过SSH通道rsync rsync -az -e ssh --delete ip_addr:/home/ public /home/local 通过ssh和压缩将一个远程目录同步到本地目录 rsync -az -e ssh --delete /home/local ip_addr:/home/ public 通过ssh和压缩将本地目录同步到远程目录 dd bs=1M if =/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz' 通过ssh在远程主机上执行一次备份本地磁盘的操作 dd if =/dev/sda of=/tmp/file1 备份磁盘内容到一个文件 tar -Puf backup.tar /home/user 执行一次对 '/home/user' 目录的交互式备份操作 ( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p' 通过ssh在远程目录中复制一个目录内容 ( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' 通过ssh在远程目录中复制一个本地目录 tar cf - . | (cd /tmp/backup ; tar xf - ) 本地将一个目录复制到另一个地方,保留原有权限及链接 find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents 从一个目录查找并复制所有以 '.txt' 结尾的文件到另一个目录 find / var /log -name '*.log' | tar cv --files- from =- | bzip2 > log.tar.bz2 查找所有以 '.log' 结尾的文件并做成一个bzip包 dd if =/dev/hda of=/dev/fd0 bs=512 count=1 做一个将 MBR (Master Boot Record)内容复制到软盘的动作 dd if =/dev/fd0 of=/dev/hda bs=512 count=1 从已经保存到软盘的备份中恢复MBR内容
网络 - (以太网和WIFI无线)
ifconfig eth0 显示一个以太网卡的配置 ifup eth0 启用一个 'eth0' 网络设备 ifdown eth0 禁用一个 'eth0' 网络设备 ifconfig eth0 192.168.1.1 netmask 255.255.255.0 控制IP地址 ifconfig eth0 promisc 设置 'eth0' 成混杂模式以嗅探数据包 (sniffing) dhclient eth0 以dhcp模式启用 'eth0'