find 命令用于在指定目录下查找文件和目录。
find [路径] [匹配条件] [动作]
路径 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。
expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。
-name pattern:按文件名查找,支持使用通配符 * 和 ?。-type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。-size [+-]size[cwbkMG]:按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。-mtime days:按修改时间查找,支持使用 + 或 - 表示在指定天数前或后,days 是一个整数表示天数。-user username:按文件所有者查找。-group groupname:按文件所属组查找。动作: 可选的,用于对匹配到的文件执行操作,比如删除、复制等。 find 命令中用于时间的参数如下:
-amin n:查找在 n 分钟内被访问过的文件。-atime n:查找在 n*24 小时内被访问过的文件。-cmin n:查找在 n 分钟内状态发生变化的文件(例如权限)。-ctime n:查找在 n*24 小时内状态发生变化的文件(例如权限)。-mmin n:查找在 n 分钟内被修改过的文件。-mtime n:查找在 n*24 小时内被修改过的文件。在这些参数中,n 可以是一个正数、负数或零。负数表示在指定的时间内修改或访问过的文件,正数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。 关于时间 n 参数的说明:
cat命令用于连接文件并打印到标准输出设备上,它的主要作用是用于查看和连接文件。
cat [选项] [文件]
参数:
-n:显示行号,会在输出的每一行前加上行号。-b:显示行号,但只对非空行进行编号。-s:压缩连续的空行,只显示一个空行。-E:在每一行的末尾显示 $ 符号。-T:将 Tab 字符显示为 ^I。-v:显示一些非打印字符。 使用:cat filename 会将指定文件的内容输出到终端上。cat file1 file2 > combined_file 可以将 file1 和 file2 的内容连接起来,并将结果输出到 combined_file 中。cat 命令来创建文件,例如 cat > filename,然后你可以输入文本,按 Ctrl+D 来保存并退出。cat 与管道(|)结合使用,用来显示其他命令的输出,例如 ls -l | cat 会将 ls -l 的输出通过 cat 打印到终端上。cat >> filename,将标准输入追加到文件 filename 的末尾。cat file1 file2,同时显示 file1 和 file2 的内容。touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。ls -l 可以显示档案的时间记录。
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
参数:
which命令用于查找文件。 which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
which [文件...]
参数:
# 使用指令"which"查看指令"bash"的绝对路径,输入如下命令:
which bash
# /bin/bash
expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串。
expr 表达式
表达式说明:
expr length “this is a test” # 14
expr substr “this is a test” 3 5 # is is
expr index "sarasara" a # 2
expr 10 + 10 # 20
chmod(change mode)命令是控制用户对文件的权限的命令。 只有文件所有者和超级用户可以修改文件或目录的权限。 文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。

chmod [选项] 权限模式 文件...
chmod [选项] --reference=参考文件 文件...
参数
# 1. 符号模式
[ugoa...][[+-=][rwxX]...][,...]
# u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
# + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
# r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
chmod ug+x,o-w,u=rwx filename1 filename2
# 2. 八进制语法
# 4=r,2=w,1=x
# 755: `rwxr-xr-x` 644: `rw-r--r--` 700: `rwx------`
chmod 755 filename
less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。
less [参数] 文件
参数
rm命令用于删除一个文件或者目录。
rm [option] name...
参数:
awk 是一种处理文本文件的语言,是一个强大的文本分析工具。
awk options 'pattern {action}' file
参数说明:
options:是一些选项,用于控制 awk 的行为。pattern:是用于匹配输入数据的模式。如果省略,则 awk 将对所有行进行操作。{action}:是在匹配到模式的行上执行的动作。如果省略,则默认动作是打印整行。 options 参数说明:-F <分隔符> 或 --field-separator=<分隔符>: 指定输入字段的分隔符,默认是空格。使用这个选项可以指定不同于默认分隔符的字段分隔符。-v <变量名>=<值>: 设置 awk 内部的变量值。可以使用该选项将外部值传递给 awk 脚本中的变量。-f <脚本文件>: 指定一个包含 awk 脚本的文件。这样可以在文件中编写较大的 awk 脚本,然后通过 -f 选项将其加载。-V 或 --version: 显示 awk 的版本信息。-h 或 --help: 显示 awk 的帮助信息,包括选项和用法示例。 使用# 打印整行:
awk '{print}' file
# 打印特定列:
awk '{print $1, $2}' file
# 使用分隔符指定列:
awk -F',' '{print $1, $2}' file
# 打印行数:
awk '{print NR, $0}' file
# 打印行数满足条件的行:
awk '/pattern/ {print NR, $0}' file
# 计算列的总和:
awk '{sum += $1} END {print sum}' file
# 打印最大值:
awk 'max < $1 {max = $1} END {print max}' file
# 格式化输出:
awk '{printf "%-10s %-10s\n", $1, $2}' file
sed 命令是利用脚本来处理文本文件。sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数:
# 将第 2~5 行删除
sed '2,5d' filename
# testfile 文件的第四行后添加一行newLine,并将结果输出到标准输出
sed -e 4a\newLine testfile
tr命令用于转换或删除文件中的字符。 tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
tr [-cdst][--help][--version][第一字符集][第二字符集]
tr [OPTION]…SET1[SET2]
参数
# 将文件testfile中的小写字母全部转换成大写字母
cat testfile |tr a-z A-Z
grep (global regular expression) 命令用于查找文件里符合条件的字符串或正则表达式。
grep [options] pattern [files]
grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
-i:忽略大小写进行匹配。-v:反向查找,只打印不匹配的行。-n:显示匹配行的行号。-r:递归查找子目录中的文件。-l:只打印匹配的文件名。-c:只打印匹配的行数。 用例# 在文件 file.txt 中查找字符串 "hello",并打印匹配的行
grep hello file.txt
# 在文件夹 dir 中递归查找所有文件中匹配正则表达式 "pattern" 的行,并打印匹配行所在的文件名和行号
grep -r -n pattern dir/
# 在标准输入中查找字符串 "world",并只打印匹配的行数
echo "hello world" | grep -c world
# 在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行
grep test *file
# 以递归的方式查找目录下符合条件的文件
grep -r update /etc/acpi
# 反向查找。通过"-v"参数可以打印出不符合条件行的内容。查找文件名中包含 test 的文件中不包含test 的行
grep -v test *test*
zip 命令用于压缩文件。zip 是个使用广泛的压缩程序,压缩后的文件后缀名为 .zip。与 gzip 或 bzip2 不同,zip 可以压缩多个文件或整个目录,并保留文件的目录结构。
zip [options] output.zip file1 file2 ...
参数选项:
-r:递归压缩目录及其子目录中的所有文件。-e:为压缩文件设置密码保护。-q:静默模式,不显示压缩过程。-v:显示详细的压缩过程。-x:排除某些文件或目录,不进行压缩。-m:压缩后删除原始文件。-0 到 -9:指定压缩级别,-0 表示存储不压缩,-9 表示最高压缩率,默认是 -6。unzip 命令用于解压缩 .zip 格式的压缩文件。unzip 工具能够解压缩包含多个文件和目录的 .zip 文件,并且广泛用于处理跨平台压缩文件。
unzip [options] file.zip
参数:
-d <directory>:将解压缩的文件放入指定的目录。-l:列出 .zip 文件中的内容,但不解压。-v:显示详细信息,包括 .zip 文件的结构和压缩率等信息。-t:测试 .zip 文件的完整性,但不解压。-n:解压时不覆盖已存在的文件。-o:解压时覆盖已存在的文件,而不提示。-x <pattern>:解压时排除指定的文件或目录。-j:解压时不保留目录结构,将所有文件解压到当前目录中。gzip 命令用于压缩文件。gzip 是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出 .gz 的扩展名。gzip 使用 DEFLATE 压缩算法,通常比 bzip2 更快,但压缩比稍低。 要解压缩 .gz 文件,可以使用 -d 选项或直接使用 gunzip
gzip [options] [file...]
参数:
-d:解压缩 .gz 文件。相当于使用 gunzip 命令。-k:保留原始文件,不删除。-r:递归压缩目录下的所有文件。-v:显示详细的压缩或解压缩过程。-l:显示压缩文件的详细信息,如压缩率、原始大小等。-1 到 -9:指定压缩比。-1 是最快的压缩,压缩率最低;-9 是最慢的压缩,压缩率最高。默认是 -6。-t:测试压缩文件的完整性。tar(tape archive)命令用于备份文件。tar 是 Linux 和 Unix 系统中用于归档文件和目录的强大命令行工具。 tar 通常用于将多个文件和目录打包成一个归档文件,称为 "tarball"(通常带有 .tar 扩展名)。tar 本身不压缩文件,但可以与压缩工具(如 gzip 或 bzip2)结合使用,创建压缩的归档文件(如 .tar.gz 或 .tar.bz2)。
tar [options] -f archive.tar [files...]
# 创建归档文件:将文件 file1、file2 和 directory 打包到一个名为 archive.tar 的归档文件中
tar -cvf archive.tar file1 file2 directory
# -c: 创建新的归档文件
# -v: 显示详细输出,列出被添加到归档中的文件
# -f: 指定归档文件的名称
# 解压归档文件:解压名为 archive.tar 的归档文件,还原其中包含的文件和目录
tar -xvf archive.tar
# -x: 解压归档文件
# -v: 显示详细输出,列出被解压的文件
# -f: 指定要解压的归档文件的名称
du (disk usage)命令用于显示目录或文件的大小。du 会显示指定的目录或文件所占用的磁盘空间。
du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>][--max-depth=<目录层数>][--help][--version][目录或文件]
参数说明:
# du
608 ./test6
308 ./test4
4 ./scf/lib
4 ./scf/service/deploy/product
4 ./scf/service/deploy/info
936 .
# du log.log
300 log.log
# du test
608K test/test6
308K test/test4
4.0K test/scf/lib
4.0K test/scf/service/deploy/product
4.0K test/scf/service/deploy/info
936K test
df(display free disk space) 命令用于用于显示文件系统的磁盘空间使用情况,包括总容量、已用空间、可用空间和挂载点等信息。
# df [选项]... [FILE]...
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda6 29640780 4320704 23814388 16% /
udev 1536756 4 1536752 1% /dev
tmpfs 617620 888 616732 1% /run
none 5120 0 5120 0% /run/lock
none 1544044 156 1543888 1% /run/shm
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda6 29G 4.2G 23G 16% /
udev 1.5G 4.0K 1.5G 1% /dev
tmpfs 604M 892K 603M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1.5G 156K 1.5G 1% /run/shm
# 文件系统信息
# df test
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda6 29640780 4320600 23814492 16% /
# 输出显示 inode 信息而非块使用量
# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda6 1884160 261964 1622196 14% /
udev 212748 560 212188 1% /dev
tmpfs 216392 477 215915 1% /run
none 216392 3 216389 1% /run/lock
none 216392 8 216384 1% /run/shm
# df --total
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda6 29640780 4320720 23814372 16% /
udev 1536756 4 1536752 1% /dev
tmpfs 617620 892 616728 1% /run
none 5120 0 5120 0% /run/lock
none 1544044 156 1543888 1% /run/shm
total 33344320 4321772 27516860 14%
stat 命令用于显示 inode 内容。
stat [文件或目录]
# stat testfile
File: `testfile'
Size: 102 Blocks: 8 IO Block: 4096 regular file
Device: 807h/2055d Inode: 1265161 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2014-08-13 14:07:20.000000000 +0800
Modify: 2014-08-13 14:07:07.000000000 +0800
Change: 2014-08-13 14:07:07.000000000 +0800
telnet命令用于远端登入。
telnet [-8acdEfFKLrx][-b<主机别名>][-e<脱离字符>][-k<域名>][-l<用户名称>][-n<记录文件>][-S<服务类型>][-X<认证形态>][主机名称或IP地址<通信端口>]
telnet 192.168.0.7
参数说明:
netconfig命令用于设置网络环境。
netconfig
ifconfig命令用于显示或设置网络设备。
ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<hw<网络设备类型><硬件地址>][io_addr<I/O地址>][irq<IRQ地址>][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]
# 启动关闭指定网卡
# ifconfig eth0 down
# ifconfig eth0 up
# 为网卡配置和删除IPv6地址
# ifconfig eth0 add 33ffe:3240:800:1005::2/ 64 //为网卡设置IPv6地址
# ifconfig eth0 del 33ffe:3240:800:1005::2/ 64 //为网卡删除IPv6地址
# 用ifconfig修改MAC地址
# ifconfig eth0 down //关闭网卡
# ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改MAC地址
# ifconfig eth0 up //启动网卡
# ifconfig eth1 hw ether 00:1D:1C:1D:1E //关闭网卡并修改MAC地址
# ifconfig eth1 up //启动网卡
# 配置IP地址
# ifconfig eth0 192.168.1.56 //给eth0网卡配置IP地址
# ifconfig eth0 192.168.1.56 netmask 255.255.255.0 // 给eth0网卡配置IP地址,并加上子掩码
# ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255 // 给eth0网卡配置IP地址,加上子掩码,加上个广播地址
# 启用和关闭ARP协议
# ifconfig eth0 arp //开启
# ifconfig eth0 -arp //关闭
# 设置最大传输单元
# ifconfig eth0 mtu 1500 //设置能通过的最大数据包大小为 1500 bytes
netstat 命令用于显示网络状态。
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
# 显示详细的网络状况
# netstat -a
# 显示当前户籍UDP连接状况
# netstat -nu
# 显示UDP端口号的使用情况
# netstat -apu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 *:32768 *:* -
udp 0 0 *:nfs *:* -
udp 0 0 *:641 *:* 3006/rpc.statd
udp 0 0 192.168.0.3:netbios-ns *:* 3537/nmbd
udp 0 0 *:netbios-ns *:* 3537/nmbd
udp 0 0 192.168.0.3:netbios-dgm *:* 3537/nmbd
udp 0 0 *:netbios-dgm *:* 3537/nmbd
udp 0 0 *:tftp *:* 3346/xinetd
udp 0 0 *:999 *:* 3366/rpc.rquotad
udp 0 0 *:sunrpc *:* 2986/portmap
udp 0 0 *:ipp *:* 6938/cupsd
udp 0 0 *:1022 *:* 3392/rpc.mountd
udp 0 0 *:638 *:* 3006/rpc.statd
# 显示网卡列表
# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 181864 0 0 0 141278 0 0 0 BMRU
lo 16436 0 3362 0 0 0 3362 0 0 0 LRU
kill 命令用于终止正在运行的进程。
kill [options] <PID>
<PID> 是要终止进程的进程 ID。 参数说明:
-l:列出所有可用的信号。-<signal>:发送特定的信号给目标进程,如 -9 表示发送 KILL 信号,即强制终止进程。# 终止进程:默认情况下,kill命令发送SIGTERM(信号15),这可以请求进程终止。如果进程没有捕获这个信号,它将被终止。
kill PID
# 发送指定信号:通过 -s 选项可以发送指定的信号。
kill -s SIGNAL PID
kill -9 PID
# 使用 kill -l 命令列出所有可用信号。
# SIGKILL(信号9):立即结束进程,不能被捕获或忽略。
# SIGTERM(信号15):正常结束进程,可以被捕获或忽略。
# SIGSTOP(信号19):暂停进程,不能被捕获、忽略或结束。
# SIGCONT(信号18):继续执行被暂停的进程。
# SIGINT(信号2):通常是Ctrl+C产生的信号,可以被进程捕获或忽略。
ps (英文全拼:process status)命令用于显示当前进程的状态。
ps [options] [--help]
参数:
# au(x) 输出格式
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- USER: 行程拥有者
- PID: pid
- %CPU: 占用的 CPU 使用率
- %MEM: 占用的记忆体使用率
- VSZ: 占用的虚拟记忆体大小
- RSS: 占用的记忆体大小
- TTY: 终端的次要装置号码 (minor device number of tty)
- STAT: 该行程的状态:
- START: 行程开始时间
- TIME: 执行的时间
- COMMAND:所执行的指令
top是一个在 Linux 和其他类 Unix 系统上常用的实时系统监控工具。
top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
-d <秒数>:指定 top 命令的刷新时间间隔,单位为秒。-n <次数>:指定 top 命令运行的次数后自动退出。-p <进程ID>:仅显示指定进程ID的信息。-u <用户名>:仅显示指定用户名的进程信息。-H:在进程信息中显示线程详细信息。-i:不显示闲置(idle)或无用的进程。-b:以批处理(batch)模式运行,直接将结果输出到文件。-c:显示完整的命令行而不截断。-S:累计显示进程的 CPU 使用时间。
load average 显示的是系统平均负载,由三个数值组成:load average: 0.50, 0.65, 0.82
↑ ↑ ↑
1分钟 5分钟 15分钟
在特定时间窗口内,处于可运行状态(R) 和 不可中断睡眠状态(D) 的进程/线程的平均数量。
| 正常范围 | < 0.7 × CPU核心数 |
who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等。
who - [husfV] [user]
# who 显示当前登录系统的用户
root tty7 2014-05-13 12:12 (:0)
root pts/0 2014-05-14 17:09 (:0.0)
root pts/1 2014-05-14 18:51 (192.168.1.17)
root pts/2 2014-05-14 19:48 (192.168.1.17)
# who -H 显示标题栏
NAME LINE TIME COMMENT
root tty7 2014-05-13 12:12 (:0)
root pts/0 2014-05-14 17:09 (:0.0)
root pts/1 2014-05-14 18:51 (192.168.1.17)
root pts/2 2014-05-14 19:48 (192.168.1.17)
# who -l -H 显示用户登录来源
NAME LINE TIME IDLE PID COMMENT
LOGIN tty4 2014-05-13 12:11 852 id=4
LOGIN tty5 2014-05-13 12:11 855 id=5
LOGIN tty2 2014-05-13 12:11 862 id=2
LOGIN tty3 2014-05-13 12:11 864 id=3
LOGIN tty6 2014-05-13 12:11 867 id=6
LOGIN tty1 2014-05-13 12:11 1021 id=1
# who -T -H 显示终端属性
NAME LINE TIME COMMENT
root + tty7 2014-05-13 12:12 (:0)
root + pts/0 2014-05-14 17:09 (:0.0)
root - pts/1 2014-05-14 18:51 (192.168.1.17)
root - pts/2 2014-05-14 19:48 (192.168.1.17)
# who -m -H 只显示当前用户
NAME LINE TIME COMMENT
root pts/1 2014-05-14 18:51 (192.168.1.17)
whoami命令用于显示自身用户名称。
whoami [--help][--version]
# whoami 显示用户名
root
su(英文全拼:switch user)命令用于切换用户身份的命令,除 root 外,需要键入该使用者的密码。 使用权限:所有使用者。
su [选项] [用户名]
su # 切换到root,保持当前环境
su - # 切换到root,加载root的完整环境
su root # 明确指定切换到root用户
# 切换到其他用户
su username
su - username
su -l username
# 临时以 root 身份执行命令
su -c "apt update && apt upgrade" root
free命令用于显示内存状态。
free [-bkmotV][-s <间隔秒数>]
# free //显示内存使用信息
total used free shared buffers cached
Mem: 254772 184568 70204 0 5692 89892
-/+ buffers/cache: 88984 165788
Swap: 524280 65116 459164
# free -t //以总和的形式查询内存的使用信息
total used free shared buffers cached
Mem: 254772 184868 69904 0 5936 89908
-/+ buffers/cache: 89024 165748
Swap: 524280 65116 459164
Total: 779052 249984 529068
# free -s 10 //每10s 执行一次命令
total used free shared buffers cached
Mem: 254772 187628 67144 0 6140 89964
-/+ buffers/cache: 91524 163248
Swap: 524280 65116 459164
total used free shared buffers cached
Mem: 254772 187748 67024 0 6164 89940
-/+ buffers/cache: 91644 163128
Swap: 524280 65116 459164
参数说明:
dstat 是一个功能强大的 Linux 系统监控工具,它可以实时显示系统资源使用情况,包括 CPU、内存、磁盘、网络等关键指标。dstat 的设计目标是替代传统的 vmstat、iostat、netstat 等工具,提供一个统一的监控界面。
dstat [选项] [间隔时间] [执行次数]
-c显示 CPU 使用情况-d显示磁盘读写情况-m显示内存使用情况-n显示网络状态-l显示系统负载-p显示进程状态-s显示交换分区使用情况-t显示时间戳--output将输出保存到 CSV 文件--top-cpu显示最耗 CPU 的进程--top-mem显示最耗内存的进程man 命令是 "manual" 单词的缩写,用于查看各种命令、函数和配置文件的手册页面。
man [选项] [节号] 命令/主题
参数
-f:显示与指定关键字相关的手册页面。-k:搜索手册页中与关键字匹配的条目。-a:显示所有匹配的手册页面。-w:仅显示手册页的位置,而不显示其内容。ssh 命令用于通过 SSH 协议连接到远程主机,实现远程登录和执行命令,它加密会话中的所有通信,确保数据传输的安全性。
ssh [options] [user@]hostname [command]
ssh test@runoob.com
ssh -p 2222 test@runoob.com
常用选项
-l user:指定要登录的用户。-p port:指定连接到远程主机的端口号,默认是22。-i identity_file:指定身份验证文件(私钥文件)。-v:详细模式,可以显示调试信息。-C:启用压缩。-N:不执行远程命令,只进行端口转发。-f:后台运行。-L local_port:remote_host:remote_port:本地端口转发。-R remote_port:local_host:local_port:远程端口转发。-D [bind_address:]port:动态应用程序级端口转发。ss (Socket Statistics) 是 Linux 中用于查看套接字统计信息的命令,功能类似于 netstat,但速度更快,提供更详细的网络连接状态信息。
ss [options]
参数:
-a, --all:显示所有的套接字,包括监听和非监听的。-t, --tcp:仅显示 TCP 套接字。-u, --udp:仅显示 UDP 套接字。-l, --listening:仅显示监听状态的套接字。-p, --processes:显示与套接字关联的进程信息。-n, --numeric:以数字形式显示地址,而不是解析成主机名。-r, --resolve:将主机名解析为 IP 地址。-s, --summary:显示套接字的摘要信息。-4:仅显示 IPv4 套接字。-6:仅显示 IPv6 套接字。-i, --info:显示详细的内部信息。-o, --options:显示 TCP 计时器信息。-K, --kill:通过 ID 杀死指定的 socket。-f, --family=FAMILY:指定协议族(如 inet, inet6, unix, link)。-m, --memory:显示每个套接字使用的内存。-H, --no-header:不显示标题行。-v, --verbose:显示详细的输出。vmstat(Virtual Memory Statistics)是 Linux 系统上一个功能强大的性能监控工具,它能够实时报告系统的进程、内存、交换分区、I/O 块和 CPU 活动等关键性能指标。
vmstat [选项] [时间间隔] [次数]
iostat(Input/Output Statistics)是Linux系统下一个强大的性能监控工具,属于sysstat工具包的一部分。它主要用于监控系统的磁盘I/O活动情况和CPU使用情况。
# Ubuntu/Debian
sudo apt-get install sysstat
# CentOS/RHEL
sudo yum install sysstat
iostat [选项] [时间间隔] [次数]
curl(Client URL)是一个强大的命令行工具,用于在 Linux/Unix 系统中传输数据。
curl [options] [URL...]
wget 是 Linux 系统中一个功能强大的非交互式网络下载工具,名称来源于 "World Wide Web" 和 "get" 的组合。它支持通过 HTTP、HTTPS 和 FTP 协议下载文件,具有断点续传、递归下载等实用特性。
wget [选项] [URL]
perf 是 Linux 系统性能分析工具集,全称是 Performance Event Counters。它基于 Linux 内核的 perf_events 子系统,能够提供硬件和软件层面的性能分析能力。
perf [--version] [--help] COMMAND [ARGS]
# 统计 ls 命令的执行情况
perf stat ls
# 监控指定进程
perf stat -p 1234
# 监控特定事件
perf stat -e cycles,instructions,cache-misses ls
watch 是 Linux 系统中一个非常实用的命令行工具,它能够定期执行指定的命令,并将输出结果全屏显示。这个命令特别适合用于监控系统状态、文件变化或任何需要持续观察的命令输出。
watch [选项] 命令
# 监控系统内存使用情况
watch -n 1 free -h # 这个命令会每秒刷新一次,显示当前内存使用情况(`-h` 参数使输出更易读)。
# 监控目录文件变化
watch -d 'ls -l /var/log' # 使用 `-d` 选项可以高亮显示文件列表的变化,非常适合监控日志目录。
# 监控网络连接
watch -n 0.5 'netstat -tulnp | grep 80' # 这个命令每0.5秒检查一次80端口的网络连接情况。
### 监控CPU温度
watch -n 2 'sensors | grep Core' # 每2秒显示一次CPU核心温度。
# 设置变量
# 变量名=变量所指内容
# 变量名可以包含字母(大小写敏感)、数字和下划线 _,不能包含其他特殊字符。变量名不能以数字开头,但可以包含数字。不要使用Shell的关键字(例如 if、then、else、fi、for、while 等)作为变量名,以免引起混淆。
variable_name=value # 等号两侧避免空格
# 访问变量
# 变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
echo $variable_name
echo ${variable_name}
# 只读变量
# 使用readonly命令
readonly variable_name
# 删除变量
# unset不能删除只读变量
unset varibale_name
# 字符串,使用 '' 或者 "" 来定义
# 建议使用双引号,单引号限制较多
s='Hello, World!'
s="Hello, World!"
# 获取字符串长度
echo ${#string}
echo ${#string[0]}
# 提取子字符串
echo ${string:1:4} # 第一个字符的索引值为 0
# 查找子字符串
echo `expr index "$string" ab` # 查找字符 a 或 b 的位置(哪个字母先出现就计算哪个)
# 整数变量,可以使用 declare 或 typeset 命令来声明整数变量
declare -i integer=24
typeset -i age=20
# 数组变量。数组可以是整数索引数组或关联数组
my_array=(1 2 3)
declare -A associative_array
associative_array["name"]="Henry"
associative_array["age"]=26
# 获取数组元素
echo ${数组名[下标]}
# 获取全部元素
echo ${array_name[@]}
echo ${array_name[*]}
# 获取数组长度
# 取得数组元素的个数
echo ${#array_name[@]}
# 或者
echo ${#array_name[*]}
# 特殊变量
# $0 表示脚本的名称,$1, $2等表示脚本的参数。
# $#表示传递给脚本的参数数量,$? 表示上一个命令的退出状态等。
age = 20 # age是字符串类型