文章目录
- 一、基本命令
- 1、重启
- 2、关机
- 3、清屏
- 4、显示当前的工作目录
- 5、帮助命令
- 6、显示目录下的文件和子目录(ls)
- 二、文件操作
- 1、新建文件
- 2、新建文件夹
- 3、复制文件或目录
- 4、删除文件或目录
- 5、移动文件
- 6、查看文件内容
- 7、文件权限
- 8、改变文件或目录的权限
- 9、改变文件或目录的拥有者
- 10、改变文件或目录的所属组
- 11、文件下载(wget)
- 12、文件搜索(find)
- 13、统计文件大小
- 三、用户操作
- 1、用户切换
- 2、修改密码
- 3、用户新增
- 4、用户删除
- 5、Linux中与用户管理相关的文件
- 四、压缩和打包
- 1、gzip 压缩后的文件是.gz格式
- 2、zip 压缩后的文件为.zip格式(压缩、解压缩都保留原文件)
- 3、bzip2 压缩后的扩展名是.bz2
- 4、将a、b、c、d这四个文件打包成一个文件:file.tar
- 5、解这种包
- 6、打包同时进行压缩
- 7、解这种包
- 8、查看包
- 五、系统性能
- 1、查看物理CPU个数
- 2、查看每个物理CPU中core的个数(即核数)
- 3、查看CPU型号
- 4、查看逻辑CPU的个数
- 5、查看内存
- 6、查看磁盘空间
- 7、检查内存使用情况
- 8、查看CPU总体消耗(top)
- 9、查看CUP总体消耗占比(sar)
- 10、找到进程中最耗CPU的线程
- 11、查看线程是否存在死锁
- 12、查看磁盘详细读写情况
- 六、其他高级命令
- 1、重定向
- 2、统计(Word Count)
- 3、网络
- 4、命令执行规则
- 5、查看命令历史记录history
- 6、进程操作
- 7、远程拷贝
- 8、共享挂载
一、基本命令
1、重启
shutdown -r now 或 reboot 或 init 6
2、关机
shutdown -h now 或 init 0
3、清屏
ctrl+l 或 clear
4、显示当前的工作目录
pwd
5、帮助命令
man #查找内容
whatis #查找内容
whereis #查找位置
6、显示目录下的文件和子目录(ls)
ls -a #显示所有文件和目录(包括隐藏文件和隐藏目录)
ls -i #显示每个文件或目录的inode
ls -m #以“,”作为分隔
ls -R #递归显示所有子目录
ls -l #使用长格式显示文件内容(可以简化为“ll”)
ll -t #以时间降序排列
ll -t|tac #以升序排列
二、文件操作
1、新建文件
touch 文件名
2、新建文件夹
mkdir 目录名
mkdir -p a/b/c
mkdir -m 755 目录名
3、复制文件或目录
cp 源文件 目标文件
cp -R 目录 目标位置
4、删除文件或目录
rm -r 目录
rm -f 文件
rm -rf 文件或目录
5、移动文件
mv 源文件 目标文件
6、查看文件内容
cat file.log | grep "test"
more -c -10 +100 file.log #显示文件file的内容,每10行显示一次,而且在显示之前先清屏。从100行开始
less file.log
7、文件权限
user:该文件的拥有者对文件的操作权限
group:跟拥有者同组的其他用户对该文件的操作权限
other:其他用户对该文件的操作权限
a)对于文件而言:
r:可读 w:可写 x:可执行
b)对于目录而言:
r:可以用ls命令查看目录中的内容
w:表示可以在该目录下建立或删除文件及子目录
x:表示可以用cd命令进入该目录
8、改变文件或目录的权限
chmod [ugo][+-][rwx] 文件
chmod u=rwx 文件
chmod -R 755 目录
9、改变文件或目录的拥有者
chown 用户名 文件名
chown -R 用户名 目录
10、改变文件或目录的所属组
chgrp 用户名 文件名
chgrp -R 用户名 目录
chgrp -R 用户名:用户名 目录
11、文件下载(wget)
wget URL:下载单个文件
wget -O xxx.zip URL:下载并重命名
wget –limit-rate=300k URL:下载限速
wget -c URL:断点续传
wget -b URL:后台下载
wget –spider URL:测试下载链接
wget -i 文件:下载多个文件 (文件中含多个URL)
wget –mirror -p –convert-links -P ./LOCAL URL :下载整个网站到本地
wget –reject=gif url:过滤指定格式下载整个网址
wget -r -A下载指定格式文件:下载整个网址指定格式文件
12、文件搜索(find)
find / -name file :从 '/' 开始进入根文件系统搜索文件和目录
find / -user yunfan:搜索属于用户 'yunfan' 的文件和目录
find /home/yunfan -name \*.bin:在目录 '/ home/yunfan' 中搜索带有'.bin' 结尾的文件
find /usr/bin -type f -atime +100:搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10:搜索在10天内被创建或者修改过的文件
13、统计文件大小
du -h:显示文件大小
du -H:显示文件大小(K,M,G是以1000为换算单位)
du -c:统计总和
du|sort -nr|more:按照空间大小排序
du -h --max-depth=1:子目录所占的空间
du -sh ./*:统计当前路径的所有目录大小
三、用户操作
1、用户切换
su - root #普通用户->超级用户
su 用户名 #超级用户->普通用户
2、修改密码
passwd + 用户名 #超级用户
passwd #普通用户
3、用户新增
useradd 用户名 #新增用户:
useradd -m -d 路径 用户名 #新增用户时,指定主目录
4、用户删除
userdel 用户名 #删除用户
userdel -r 用户 #删除用户,同时删除宿主目录
5、Linux中与用户管理相关的文件
/etc/passwd #存放用户的密码信息
/etc/shadow #用户密码的影子文件
/etc/group #用户的组文件
/etc/gshadow #组的影子文件
这四个文件一般都不用手工更改,都是通过命令来实现。
四、压缩和打包
1、gzip 压缩后的文件是.gz格式
压缩:gzip 文件名 或 gzip -r 目录
解压缩:gunzip 压缩文件 或 gzip -d 压缩文件
2、zip 压缩后的文件为.zip格式(压缩、解压缩都保留原文件)
压缩:zip 压缩文件 源文件1 源文件2 ….zip -r 压缩文件 源文件1 源文件2….
解压缩:unzip 压缩后的文件
3、bzip2 压缩后的扩展名是.bz2
压缩:bzip2 文件名
解压缩:bunzip2 压缩文件 或 bzip2 -d 压缩文件
4、将a、b、c、d这四个文件打包成一个文件:file.tar
tar -cvf file.tar a b c d
5、解这种包
tar -xvf file.tar
6、打包同时进行压缩
tar -zcvf file.tar.gz a b c d
7、解这种包
tar -zxvf file.tar.gz
8、查看包
tar -tf file.tar
五、系统性能
1、查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| wc -l
2、查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo | grep "cpu cores" | uniq
3、查看CPU型号
cat /proc/cpuinfo | grep 'model name' |uniq
4、查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
5、查看内存
cat /proc/meminfo | grep MemTotal
6、查看磁盘空间
fdisk -l #看到的是物理磁盘大小(包括swap分区的物理大小)
df -h #看到的是文件系统使用状况(不包括swap分区)
7、检查内存使用情况
[root@localhost ~]# free -h -s 3total used free shared buff/cache available
Mem: 1.7G 835M 67M 568K 831M 748M
Swap: 0B 0B 0B
- Mem:是内存的使用情况。
- Swap:是交换空间的使用情况。
- total:系统总的可用物理内存和交换空间大小。
- used:已经被使用的物理内存和交换空间。
- free:还有多少物理内存和交换空间可用使用,是真正尚未被使用的物理内存数量。
- shared:被共享使用的物理内存大小。
- buff/cache:被 buffer(缓冲区) 和 cache(缓存) 使用的物理内存大小。
- available:还可以被应用程序使用的物理内存大小,它是从应用程序的角度看到的可用内存数量,available ≈ free + buffer + cache。
8、查看CPU总体消耗(top)
top可以查看CPU总体消耗,包括分项消耗,如User,System,Idle,nice等。
- Shift + H:显示java线程;
- Shift + M:按照内存使用排序;
- Shift + P:按照CPU使用时间(使用率)排序;
- Shift + T:按照CPU累积使用时间排序。
[root@localhost ~]# top
top - 01:30:19 up 83 days, 55 min, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 79 total, 1 running, 78 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1776244 total, 69352 free, 855920 used, 850972 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 766020 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
23712 mysql 20 0 1894384 505420 9084 S 0.3 28.5 241:46.61 mysqld 1 root 20 0 43420 2712 1480 S 0.0 0.2 3:54.43 systemd
第一行:01:30:19 up 83 days, 1 user, load average: 0.00, 0.01, 0.05:01:30:19 系统时间,up 83 days 运行时间,1 user 当前登录用户数,load average 负载均衡情况,分别表示1分钟,5分钟,15分钟负载情况。
第二行:Tasks: 79 total, 1 running, 78 sleeping, 0 stopped, 0 zombie:总进程数79,运行数1,休眠 78,停止0,僵尸进程0。
第三行:%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st:用户空间CPU占比0.2%,内核空间CPU占比0.2%,改变过优先级的进程CPU占比0%,空闲CPU占比99.7,IO等待占用CPU占比0%,硬中断占用CPU占比0%,软中断占用CPU占比0%,当前VM中的cpu 时钟被虚拟化偷走的比例0%。
第四和第五行表示内存和swap区域的使用情况。
第七行表示:
- PID:进程id
- USER:进程所有者
- PR:进程优先级
- NI:nice值。负值表示高优先级,正值表示低优先级
- VIRT:虚拟内存,进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
- RES:常驻内存,进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
- SHR:共享内存,共享内存大小,单位kb
- S:进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
- %CPU:上次更新到现在的CPU时间占用百分比
- %MEM:进程使用的物理内存百分比
- TIME+:进程使用的CPU时间总计,单位1/100秒
- COMMAND:进程名称(命令名/命令行)
9、查看CUP总体消耗占比(sar)
[root@localhost ~]# sar -u 3
Linux 3.10.0---------- _x86_64_ (2 CPU)01:34:13 AM CPU %user %nice %system %iowait %steal %idle
01:34:16 AM all 0.17 0.00 0.17 0.00 0.00 99.67
01:34:19 AM all 0.17 0.00 0.17 0.00 0.00 99.67
01:34:22 AM all 0.17 0.00 0.00 0.00 0.00 99.83
01:34:25 AM all 0.00 0.00 0.17 0.00 0.00 99.83
01:34:28 AM all 0.17 0.00 0.17 0.00 0.00 99.67
01:34:31 AM all 0.00 0.00 0.00 0.00 0.00 100.00
01:34:34 AM all 0.00 0.00 0.17 0.00 0.00 99.83
- %user:用户空间的CPU使用。
- %nice:改变过优先级的进程的CPU使用率。
- %system:内核空间的CPU使用率。
- %iowait:CPU等待IO的百分比 。
- %steal:虚拟机的虚拟机CPU使用的CPU。
- %idle:空闲的CPU。
在以上的显示当中,主要看%iowait和%idle: - 若 %iowait的值过高,表示硬盘存在I/O瓶颈;
- 若 %idle的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量;
- 若 %idle的值持续低于 10,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU;
10、找到进程中最耗CPU的线程
[root@localhost ~]# ps -Lp 20379 cu
USER PID LWP %CPU NLWP %MEM VSZ RSS TTY STAT START TIME COMMAND
yunfan 20379 20379 0.0 27 9.5 2948364 170444 ? Sl Jan22 0:00 java
yunfan 20379 20390 0.0 27 9.5 2948364 170444 ? Sl Jan22 0:01 java
yunfan 20379 20391 0.0 27 9.5 2948364 170444 ? Sl Jan22 1:54 java
yunfan 20379 20392 0.0 27 9.5 2948364 170444 ? Sl Jan22 0:00 java
yunfan 20379 20393 0.0 27 9.5 2948364 170444 ? Sl Jan22 0:00 java
yunfan 20379 20394 0.0 27 9.5 2948364 170444 ? Sl Jan22 0:00 java
yunfan 20379 20395 0.0 27 9.5 2948364 170444 ? Sl Jan22 1:09 java
yunfan 20379 20396 0.0 27 9.5 2948364 170444 ? Sl Jan22 0:28 java
yunfan 20379 20397 0.0 27 9.5 2948364 170444 ? Sl Jan22 0:00 java
yunfan 20379 20398 0.0 27 9.5 2948364 170444 ? Sl Jan22 33:32 java
yunfan 20379 20403 0.0 27 9.5 2948364 170444 ? Sl Jan22 1:22 java
看TIME列可以看出那个线程耗费CPU多,根据LWP列可以看到线程的ID号,但是需要转换成16进制才可以查询线程堆栈信息。
获取线程id的十六进制码
[root@localhost ~]# printf '%x\n' 20398
4fae
使用jstack获取堆栈信息
[root@localhost ~]# jstack 20379 | grep -A 10 4fae
"VM Periodic Task Thread" os_prio=0 tid=0x00007f31e40ef800 nid=0x4fae waiting on condition JNI global references: 987:
11、查看线程是否存在死锁
[root@localhost ~]# jstack -l 20379
2021-03-21 02:05:24
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.131-b11 mixed mode):"Attach Listener" #33 daemon prio=9 os_prio=0 tid=0x00007f31b8002800 nid=0x4251 waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"http-nio-8080-exec-11" #32 daemon prio=5 os_prio=0 tid=0x00007f31b4314800 nid=0x1b7b waiting on condition [0x00007f31cf9f8000]java.lang.Thread.State: WAITING (parking)at sun.misc.Unsafe.park(Native Method)
12、查看磁盘详细读写情况
[root@localhost ~]# iostat
Linux 3.10.0----------- _x86_64_ (2 CPU)avg-cpu: %user %nice %system %iowait %steal %idle9.97 0.00 0.12 0.02 0.00 89.89Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 3.77 5.27 22.17 37802473 159078788
六、其他高级命令
1、重定向
">":输出重定向,将本来输出在屏幕上的内容输出到文件中,会将以前的内容清空。
">>":追加重定向,在原有内容的基础上进行追加,保持原有内容不变,新增加内容。
"<":输入重定向,相当于从一个文件中读取内容。
"2>":错误重定向输出符号,覆盖原文件内容。
"2>>":错误重定向输出符号,有文件内容追加的功能。
2、统计(Word Count)
wc -l:统计行数
wc -w:统计字数
wc -c:统计字节数
wc -m:统计字符数
wc -L:打印最长行的长度
wc -help:显示帮助信息
wc -version:显示版本信息
3、网络
ifconfig #查看Linux的IP地址
ping 主机地址 #检查网络之间的逻辑连通性
4、命令执行规则
命令1|命令2:将前一个命令的结果作为后一个命令的输入
命令1;命令2:依次执行命令1和命令2
命令1 && 命令2:只有命令1执行成功后命令2才能执行
命令1 || 命令2:命令1执行没有结果时才执行命令2
5、查看命令历史记录history
echo $HISTSIZE:查看命令历史记录的个数值 该值可以在/etc/profile中进行设置
~/.bash_history:用户所敲过的命令存放的位置
!n:执行历史中的第几条命令
!!:执行最后一条命令
!str:执行历史记录中以str开始的命令
6、进程操作
查看进程:ps -aux、ps -le、top
杀掉进程:kill 进程号
前后台切换:(1)xclock &:时钟后台执行(2)ctrl+z:暂停正在执行的后台进程(3)fg:切换到前台(4)bg:切换到后台
7、远程拷贝
#本地到远程服务器(文件夹,则增加-r)
scp -P 端口号 local_file remote_username@remote_ip:/remote_folder
#远程服务器到本地
scp -P 端口号 remote_username@remote_ip:/remote_folder local_file
8、共享挂载
mount /data /share:挂载一个叫做data的盘
umount /data:卸载一个叫做data的盘