文章目录
一、目录操作
pwd 查看当前工作目录
clear 清除屏幕
cd ~ 当前用户目录
cd / 根目录
cd - 上一次访问的目录
cd .. 上一级目录
- 1
- 2
- 3
- 4
- 5
- 6
查看目录内信息
ll 查看当前目录下内容(LL的小写)
- 1
创建目录
mkdir aaa 在当前目录下创建aaa目录,相对路径;
mkdir ./bbb 在当前目录下创建bbb目录,相对路径;
mkdir /ccc 在根目录下创建ccc目录,绝对路径;
- 1
- 2
- 3
递归创建目录(会创建里面没有的目录文件夹)
mkdir -p temp/nginx
- 1
搜索命令
find / -name 'b' 查询根目录下(包括子目录),名以b的目录和文件;
find / -name 'b*' 查询根目录下(包括子目录),名以b开头的目录和文件;
- 1
- 2
重命名
mv 原先目录 文件的名称 mv tomcat001 tomcat
- 1
剪切命令(有目录剪切到制定目录下,没有的话剪切为指定目录)
mv /aaa /bbb 将根目录下的aaa目录,移动到bbb目录下,在bbb,麚也叫aaa目录;
mv bbb usr/bbb 将当前目录下的bbbb目录,移动到usr目录下,并且修改名称为bbb;
- 1
- 2
复制目录
cp -r /aaa /bbb 将/目录下的aaa目录复制到/bbb目录下,在/bbb目录下的名称为aaa
cp -r /aaa /bbb/aaa 将/目录下的aa目录复制到/bbb目录下,且修改名为aaa;
- 1
- 2
强制式删除指定目录
rm -rf /bbb 强制删除/目录下的bbb目录。如果bbb目录中还有子目录,也会被强制删除,不会提示;
- 1
删除目录
rm -r /bbb 普通删除。会询问你是否删除每一个文件
- 1
二、文件操作
删除
rm -r a.java 删除当前目录下的a.java文件(每次回询问是否删除y:同意)
- 1
强制删除
rm -rf a.java 强制删除当前目录下的a.java文件
rm -rf ./a* 强制删除当前目录下以a开头的所有文件;
rm -rf ./* 强制删除当前目录下所有文件(慎用);
- 1
- 2
- 3
创建文件
touch testFile
- 1
递归删除.pyc格式的文件
find . -name '*.pyc' -exec rm -rf {} \;
- 1
打印当前文件夹下指定大小的文件
find . -name "*" -size 145800c -print
- 1
递归删除指定大小的文件(145800)
find . -name "*" -size 145800c -exec rm -rf {} \;
- 1
递归删除指定大小的文件,并打印出来
find . -name "*" -size 145800c -print -exec rm -rf {} \;
- 1
"."
表示从当前目录开始递归查找“ -name '*.exe' "
根据名称来查找,要查找所有以.exe结尾的文件夹或者文件" -type f "
查找的类型为文件"-print"
输出查找的文件目录名-size 145800c
指定文件的大小-exec rm -rf {} \;
递归删除(前面查询出来的结果)
三、文件内容操作(查看日志,更改配置文件)
修改文件内容
vim a.java 进入一般模式
i(按键) 进入插入模式(编辑模式)
ESC(按键) 退出
:wq 保存退出(shift+:调起输入框)
:w! 不保存退出(shift+:调起输入框)
- 1
- 2
- 3
- 4
- 5
文件内容的查看
cat a.java 查看a.java文件的最后一页内容;
more a.java 从第一页开始查看a.java文件内容,按回车键一行一行进行查看,
按空格键一页一页进行查看,q退出;
less a.java 从第一页开始查看a.java文件内容,按回车键一行一行的看,
按空格键一页一页的看,支持使用PageDown和PageUp翻页,q退出;
- 1
- 2
- 3
- 4
- 5
总结下more 和 less的区别:
- less可以按键盘上下方向键显示上下内容,more不能通过上下方向键控制显示
- less不必读整个文件,加载速度会比more更快
- less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容.
- 由于more不能后退.
实时查看文件后几行(实时查看日志)
tail -f a.java 查看a.java文件的后10行内容;
- 1
前后几行查看
head a.java 查看a.java文件的前10行内容;
tail -f a.java 查看a.java文件的后10行内容;
head -n 7 a.java 查看a.java文件的前7行内容;
tail -n 7 a.java 查看a.java文件的后7行内容;
- 1
- 2
- 3
- 4
文件内部搜索指定的内容
grep under 123.txt 在123.txt文件中搜索under字符串,大小写敏感,显示行;
grep -n under 123.txt 在123.txt文件中搜索under字符串,大小写敏感,显示行及行号;
grep -v under 123.txt 在123.txt文件中搜索under字符串,大小写敏感,显示没搜索到的行;
grep -i under 123.txt 在123.txt文件中搜索under字符串,大小写敏感,显示行;
grep -ni under 123.txt 在123.txt文件中搜索under字符串,大小写敏感,显示行及行号;
- 1
- 2
- 3
- 4
- 5
终止当前操作
Ctrl+c
和Ctrl+z
都是中断命令,但是作用却不一样。
ctrl+z
ctrl+c
- 1
- 2
Ctrl+Z就扮演了类似的角色,将任务中断,但是任务并没有结束,在进程中只是维持挂起的状态,用户可以使用fg/bg操作前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行。
Ctrl+C也扮演类似的角色,强制中断程序的执行。
重定向功能
可以使用 > 或 < 将命令的输出的命令重定向到test.txt文件中(没有则创建一个)
echo 'Hello World' > /root/test.txt
- 1
四、系统日志位置
cat /etc/redhat-release 查看操作系统版本
/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
/var/log/secure 与安全相关的日志信息
/var/log/maillog 与邮件相关的日志信息
/var/log/cron 与定时任务相关的日志信息
/var/log/spooler 与UUCP和news设备相关的日志信息
/var/log/boot.log 守护进程启动和停止相关的日志消息
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
查看某文件下的用户操作日志
到达操作的目录下,执行下面的程序:
cat .bash_history
- 1
五、创建与删除软连接
1、创建软连接
ln -s /usr/local/app /data
- 1
2、删除软连接
rm -rf /data
- 1
注意:取消软连接最后没有/,rm -rf 软连接。加上/是删除文件夹;
六、压缩和解压缩
tar
tar -zcvf start.tar.gz a.java b.java 将当前目录下a.java、b.java打包
tar -zcvf start.tar.gz ./* 将当前目录下的所欲文件打包压缩成haha.tar.gz文件
- 1
- 2
tar -xvf start.tar.gz 解压start.tar.gz压缩包,到当前文件夹下;
tar -xvf start.tar.gz -C usr/local(C为大写,中间无空格)
解压start.tar.gz压缩包,到/usr/local目录下;
- 1
- 2
- 3
unzip
unzip file1.zip 解压一个zip格式压缩包
zip lib.zip tomcat.jar 将单个文件压缩(lib.zip)
zip -r lib.zip lib/ 将目录进行压缩(lib.zip)
zip -r lib.zip tomcat-embed.jar xml-aps.jar 将多个文件压缩为zip文件(lib.zip)
- 1
- 2
- 3
- 4
将english.zip
包,解压到指定目录下/usr/app/
unzip -d /usr/app/com.lydms.english.zip
- 1
七、Linux下文件的详细信息
R:Read w:write x: execute执行
-rw-r--r-- 1 root root 34942 Jan 19 2018 bootstrap.jar
前三位代表当前用户对文件权限:可以读/可以写/不能执行
中间三位代表当前组的其他用户对当前文件的操作权限:可以读/不能写/不能执行
后三位其他用户对当前文件权限:可以读/不能写/不能执行
- 1
- 2
- 3
- 4
- 5
更改文件的权限
chmod u+x web.xml (---x------) 为文件拥有者(user)添加执行权限;
chmod g+x web.xml (------x---) 为文件拥有者所在组(group)添加执行权限;
chmod 111 web.xml (---x--x--x) 为所有用户分类,添加可执行权限;
chmod 222 web.xml (--w--w--w-) 为所有用户分类,添加可写入权限;
chmod 444 web.xml (-r--r--r--) 为所有用户分类,添加可读取权限;
- 1
- 2
- 3
- 4
- 5
八、常用的docker容器的命令:
1、下载镜像
Linux服务器下载安装包镜像命令
wget https://mirrors.huaweicloud.com/elasticsearch/7.8.0/elasticsearch-7.8.0-windows-x86_64.zip
- 1
https://mirrors.huaweicloud.com/
- 1
2、常用命令
#1、查看docker中下载好的镜像:
docker images
#2、查询需要的容器名称:
docker search mysql
#3、将需要的docker容器下载运行到本地(名称、端口号、msyql密码、ID):
docker run -di --name=first -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root 26d26dsfsd31a
#4、查看运行的docker容器:
docker ps
#5、查看所有的docker容器(包括未运行的):
docker ps -a
#6、停止当前运行的docker容器:
docker stop first
#7、启动docker容器:
docker start first
#8、重启docker容器:
docker restart first
#9、删除docker容器:
docker rm first
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
九、运维常用命令
1、查看服务器端口号是否可用
查看服务器是否可用
ping 49.32.587.164
- 1
查看服务器指定端口是否可用
telnet 49.32.587.164 8093
- 1
这是我写过的一个Linux安装Telnet的文章。
https://blog.csdn.net/lydms/article/details/113698856
- 1
1、shutdown(关闭计算机)
shutdown是最常用也是最安全的关机和重启命令,它会在关机之前调用fsck检查磁盘,其中-h和-r是最常用的参数:
-h:停止系统服务并关机
-r: 停止系统服务后重启
- 1
- 2
案例:
shutdown -h now --立即关机
shutdown -h 10:53 --到10:53关机,如果该时间小于当前时间,则到隔天
shutdown -h +10 --10分钟后自动关机
shutdown -r now --立即重启
shutdown -r +30 'The System Will Reboot in 30 Mins' --30分钟后重启并并发送通知给其它在线用户
- 1
- 2
- 3
- 4
- 5
2、查看处于各种连接状态数量(ESTABLISHED、CLOSE_WAIT、TIME_WAIT)
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
- 1
查看处于ESTABLISHED
状态连接
netstat -nt | awk '{if($NF=="ESTABLISHED"){wait[$5]++}}END{for(i in wait) print i,wait[i]}'
- 1
查看处于CLOSE_WAIT
状态连接
netstat -nt | awk '{if($NF=="CLOSE_WAIT"){wait[$5]++}}END{for(i in wait) print i,wait[i]}'
- 1
查看处于TIME_WAIT
状态连接
netstat -nt | awk '{if($NF=="TIME_WAIT"){wait[$5]++}}END{for(i in wait) print i,wait[i]}'
- 1
3、ping命令
对 www.lydms.com 发送 4 个 ping 包, 检查与其是否联通
ping -c 4 www.lydms.com
- 1
4、netstat 命令
netstat 命令用于显示各种网络相关信息,如网络连接, 路由表, 接口状态等等;
列出所有处于监听状态的tcp端口:
netstat -lt
- 1
查看所有的端口信息, 包括 PID 和进程名称
netstat -tulpn
- 1
5、查看当前端口号占用情况
1.用于查看某一端口的占用情况
lsof -i:8080
- 1
2.显示tcp,udp的端口和进程等相关情况
netstat -tunlp
- 1
3.指定端口号的进程情况
netstat -tunlp|grep 8080
- 1
4.查看PID进程信息
ps -aux |grep 28990
- 1
根据PID,查看JVM中各线程信息('0x9eb’为nid值)
jstack 2246|grep '0x9eb' -A 50
- 1
6、ps 命令
过滤得到当前系统中的 ssh 进程信息
ps aux | grep 'ssh'
- 1
7、管道命令
简单来说, Linux 中管道的作用是将上一个命令的输出作为下一个命令的输入, 像 pipe 一样将各个命令串联起来执行, 管道的操作符是 |
管道命令查看当前运行的程序中,名称为java的程序
ps -ef|grep java
- 1
查看/etc/passwd文件中的root内容
cat /etc/passwd | grep 'root'
- 1
查看当前系统的ip连接(Windows和Linux通用)
netstat -an
- 1
将sh test.sh任务放到后台,并将打印的日志输出到nohup.out文件中,终端不再能够接收任何输入(标准输入)
nohup sh test.sh &
- 1
将sh test.sh任务放到后台,并将打印的日志输出到nohup.out文件中,终端能够接收任何输入
nohup sh test.sh &
- 1
8、添加Host地址
打开配置文件
vim /etc/hosts
- 1
在打开的文件中添加
49.235.32.164 www.lydms.com
- 1
保存文件后,重启网络
/etc/init.d/network restart
- 1
重新加载成功:
十、yum常用命令
yum install iptables-services 下载并安装iptables
yum list 列出当前系统中安装的所有包
yum search package_name 在rpm仓库中搜寻软件包
yum update package_name.rpm 更新当前系统中所有安装的rpm包
yum update package_name 更新一个rpm包
yum remove package_name 删除一个rpm包
yum clean all 删除所有缓存的包和头文件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
十一、其他命令
查看占用资源
ps -au 占用的资源是从进程启动开始,计算的平均占用资源,比如cpu等
top 实时占用的资源;
- 1
- 2
查看当前目录所占存储
du -lh 查看当前文件下各文件夹占用存储空间
du -sh 查看当前文件夹所占存储空间
du --max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
du --max-depth=1 只查看当前目录下文件占用的存储空间
- 1
- 2
- 3
- 4
管道命令:
根据项目查看进程,更加PID查看项目,以及项目路径
ps -ef 查看所有的进程
ps -ef | grep mysql 查看mysql相关的进程
- 1
- 2
通过进程PID查看所占用的端口号
netstat -nap |grep 进程ID(PID)
- 1
查看Linux下系统存储使用率
df -h 查看系统硬盘使用情况
- 1
杀死进程(根据PID)
kill -9 2630 进程pid
- 1
关闭防火墙
service iptables stop 临时关闭防火墙
chkconfig iptables off 防火墙开启不启动
service iptables status 查看防火墙状态
- 1
- 2
- 3
开机启动选项
msconfig 查看开机启动选项
chkconfig 查看开机启动服务列表
- 1
- 2
查看MySQL服务的程序的状态
service mysql start 开启MySQL
service mysql status 查看MySQL的状态
service mysql stop 关闭MySQL
- 1
- 2
- 3
十二、Linux内核优化
打开配置文件
vim /etc/sysctl.conf
- 1
加载新的配置(需开启防火墙iptables,否则会报错)
sysctl -p
- 1
https://www.cnblogs.com/lldsn/p/10489593.html
- 1
十三、用户权限操作
1、添加用户
添加用户sum
:
useradd –d /usr/sum -m sum
- 1
关于useradd的某些参数:
-u: 指定 UID,这个 UID 必须是大于等于500,并没有其他用户占用的 UID
-g: 指定默认组,可以是 GID 或者 GROUPNAME,同样也必须真实存在
-G: 指定额外组
-c: 指定用户的注释信息
-d: 指定用户的家目录
已创建的用户sum
设置密码
passwd sum
- 1
新建的用户在面显示
cat /etc/passwd
- 1
删除用户sum
userdel sum
- 1
删除用户文件夹
rm -rf /usr/sum
- 1
切换下刚才添加的用户
su sum
- 1
回到root用户
exit
- 1
2、添加组
添加用户组
groupadd groupname
- 1
删除用户组
groupdel groupname
- 1
可以看到自己的分组和分组id
cat /etc/group
- 1
sum: x:1000:1000:: /usr/sum :/bin/bash
sum: x:0:1000:: /usr/sum :/bin/bash
十四、TOP
实时占用的资源:
top
- 1
top命令执行结果分为两个区域:统计信息区和进程信息区
1、统计信息区
TOP:任务队列信息,与uptime命令执行结果相同.
- 15:33:39:系统时间
- up 5:40:主机已运行时间
- 2 users:用户连接数(不是用户数,who命令)
- load average: 1.09, 1.04, 0.98:系统平均负载,统计最近1,5,15分钟的系统平均负载
Tasks:进程信息
- 123 total:进程总数
- 3 running:正在运行的进程数
- 120 sleeping:睡眠的进程数
- 0 stopped:停止的进程数
- 0 zombie:僵尸进程数
%CPU(s):CPU信息(当有多个CPU时,这些内容可能会超过两行)
- 42.1 us:用户空间所占CPU百分比
- 2.0 sy:内核空间占用CPU百分比
- 0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比
- 49.2 id:空闲CPU百分比
- 0.0 wa:等待输入输出的CPU时间百分比
- 6.0 hi:硬件CPU终端占用百分比
- 0.7 si:软中断占用百分比
- 0.0 st:虚拟机占用百分比
KiB Mem:内存信息(与第五行的信息类似与free命令类似)
- 3780.9 total:物理内存总量
- 727.4 free:已使用的内存总量
- 668.8 used:空闲的内存总量(free + userd = total)
- 2384.7 buff/cache:用作内核缓存的内存量
KiB:swap信息
- 2048.0 total:交换分区总量
- 2046.0 free:已使用的交换分区总量
- 2.0 used:空闲交换分区总量
- 859.6 avail:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
2、进程信息区
-
PID:进程id
-
USER:进程所有者的用户名
-
PR:优先级
-
NI:nice值。负值表示高优先级,正值表示低优先级
-
RES:进程使用的、未被换出的物理内存的大小
-
%CPU:上次更新到现在的CPU时间占用百分比
-
%MEM:进程使用的物理内存百分比
-
TIME+:进程所使用的CPU时间总计,单位1/100秒
-
COMMAND:命令名/行
-
PPID:父进程id
-
RUSER:Real user name(看了好多,都是这样写,也不知道和user有什么区别,欢迎补充此处)
-
UID:进程所有者的id
-
VIRT:进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
-
GROUP:进程所有者的组名
-
TTY:启动进程的终端名。不是从终端启动的进程则显示为?
-
NI:nice值。负值表示高优先级,正值表示低优先级
-
P:最后使用的CPU,仅在多CPU环境下有意义
-
TIME:进程使用的CPU时间总计,单位秒
-
SWAP:进程使用的虚拟内存中被被换出的大小
-
CODE:可执行代码占用的物理内存大小
-
DATA:可执行代码以外的部分(数据段+栈)占用的物理内存大小
-
SHR:共享内存大小
-
nFLT:页面错误次数
-
nDRT:最后一次写入到现在,被修改过的页面数
-
S:进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
-
WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名
-
Flags:任务标志