Linux系统常用命令
文件和文件夹操作命令
cd
进入指定目录
- 几个特殊的目录切换:
- cd . 表示当前目录
- cd … 表示父目录
- cd ~ 表示用户的家目录
- cd -上一次所在目录
- cd / 表示进入跟目录
###pwd
- 作用:查看当前工作目录
- 格式:pwd 回车
mkdir
- 作用:创建一个文件夹
- 格式:mkdir 目录
- 常用参数:
- -p:表示递归地创建目录,先创建父目录,再在父目录下创建子目录
#举例:表示先在/home目录下创建dir01目录,再在dir01目录下创建dir02目录,如果不在-p,当dir01目录不存在的时候就会报错。
mkdir -p /home/dir01/dir02
rmdir
- 作用:删除空目录,如果目录非空就不能删除
- 格式:rmdir 目录
ls
- 作用:查看目录下的内容
- 格式:ls 目录,如果不跟目录表示查看当前目录下的内容
- 常用参数:
- -l:以列表展示
- -a:查看所有的文件,包括隐藏文件
touch
- 作用:创建一个空文件,如果文件已存在就更新文件的时间戳
- 格式: touch 文件名
rm
- 作用:删除目录或文件
- 格式:rm 目录或文件
- 常用参数:
- -r:表示删除目录
- -f:表示强制删除不提示
- -rf:通常将两个参数联合使用
vi
- 作用:编辑文件,格式是vi 文件名,如果文件不存在就新建一个空文件并开始编辑,如果文件已存在就直接编辑
- 格式:vi 文件
- vi命令的三种模式:
- 命令模式:vi一个文件,默认进入的就是命令模式,在命令模式下可以删除字符,删除行,移动光标,按i、o、a可以进入编辑模式;
- 编辑模式:在编辑模式下可以编辑、删除字符,按esc可以返回到命令模式;
- 末行模式/底线模式:在末行模式下可以保存文件,查找内容,批量替换内容,退出vi命令,在命令模式下按冒号进入末行模式。
- w:保存
- wq:保存并退出
- q:退出
- q!:强制退出
- set nu:显示行号
- 输入行号回车:跳转到某一行
- %s/旧字符串/新字符串/g:表示把全文中的旧字符串换成新字符串,比如%s/INFO/ERROR/g表示把全文的INFO替换成ERROR
mv
- 作用:移动文件或目录,经常用来重命名文件或目录
- 格式:mv 源文件 目标文件,如果源文件和目标文件在同一个目录下,必须改名字,如果在不同目录下,可以不改名字
- -r:如果要移动整个目录需加上r这个参数
cp
- 作用:复制文件或目录
- 格式:cp 源文件 目标文件
- 常用参数:
- -r:递归地复制目录及目录下的内容
scp
- 作用:可以在两台主机之间拷贝文件
- 举例:
#场景一:把本机的文件拷贝到另一台主机 scp ServerAgent-2.2.3.tar.gz root@192.168.13.129:/usr/local/src/ #场景二:把另一台主机的文件拷贝到本机 scp root@192.168.13.129:/usr/local/src/ServerAgent.tar.gz ./
grep
- 作用:在文件中查找包含关键字的行,把相应的行返回
- 格式:grep 关键字 文件,比如 grep “ERROR” catalina.out表示从catalina.out文件中查找包含ERROR的行,经常跟管道符连起来用
find
- 作用:从指定目录查找文件
- 格式: find 路径 条件,条件可以是如下
- -name 名字,比如:find / -name test`
- -type 类型,类型包括f(文件)、d(目录)等,比如:find / -name test -type f
which
- 作用:从PATH变量的路径中查找命令的可执行文件的路径并返回
- 格式:which 命令,比如which find
whereis
- 作用:从PATH变量的路径中查找命令的可执行文件的路径、帮助文档以及源代码并返回
- 格式:whereis 命令,比如whereis find
du
- 作用:查看文件或目录占用的磁盘大小
- 常用参数:
- du -sh:查看文件或目录的总大小
- du -ah:查看文件或目录的总大小以及下面的每个文件分别的大小
wc
- 作用:统计文件的行数或字节
- 格式:wc 文件名
- 常用参数:
- wc -l 文件:表示统计文件的行数
- wc -c 文件:表示统计文件的字节数
cat
- 作用:查看文件的内容,输出到屏幕上,适合查看比较短的文件
- 格式:cat 文件名
- -n:表示查看文件内容并显示行号
more
- 作用:查看文件的内容,类似 cat ,不过会以一页一页的形式显示,可以翻行和翻页,适合查看比较长的文件
- 格式:more 文件名
less
- 作用:查看文件的内容,less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。
- 格式:less 文件名
head
- 作用:查看文件的头部,默认是查看前10行
- 格式:head -n 文件,比如head -20 test表示查看test文件的前20行
tail
- 作用:查看文件的尾部,默认是查看末尾的10行
- 格式:tail -n 文件名,比如tail -20 文件名表示查看末尾20行
- 常用参数:
- -f:表示查看文件实时写入的内容,输出到屏幕上,经常用来查看实时日志,比如 tail -f catelina.out或者 tail -f catelina.out |grep ERROR
问:linux怎么查看日志?
tail -f 日志文件
tail -f 日志文件>文件
- -f:表示查看文件实时写入的内容,输出到屏幕上,经常用来查看实时日志,比如 tail -f catelina.out或者 tail -f catelina.out |grep ERROR
- 日志级别:DEBUG<INFO<WARNING<ERROR,在查看日志前,需要先确保日志的开关调成最低的级别,这样可以看到最详细的日志,在查看日志的时候,重点要看ERROR级别的日志。
- 在项目中,有的项目看日志需要登录到linux主机上用命令查看,有的项目把日志查看做到了页面上,直接在页面上就可以看。
tar
- 作用:打包压缩或解压文件
- 格式:记住如下两种用法
- tar -zcvf:压缩文件,比如 tar -zcvf logs.tar.gz logs 表示把logs目录压缩成logs.tar.gz
- tar -zxvf:解压文件,比如tar -zxvf logs.tar.gz -C /usr/local/src/ 表示把logs.tar.gz解压到 /usr/local/src/目录下
unzip
- 作用:解压zip包
- 格式: unzip xxx.zip
wget
- 作用:下载文件
- 格式:wget url地址
source
- 作用:执行shell脚本、sql脚本
执行shell脚本的方法,比如有一个shell脚本是test.sh,可以用以下方式执行
1)./test.sh,可以在后面加个&来实现在后台执行脚本
2)根据脚本第一行中声明的shell类型来选择对应的命令,如果声明的是sh,那就使用sh test.sh执行,如果声明的是bash,那就使 用bash test.sh执行;
3)source test.sh
ln
- 作用:创建链接文件,链接文件包括硬链接和软链接两种,它们的区别是:
1)硬链接相当于同一个文件的多个别名,多个别名背后相当于同一个文件,inode相同,但在存储的时候,只会在磁盘上存一份,这一点跟复制两个文件是不一样的;
2)软链接相当于快捷方式,软链接文件和目标文件是两个不同的文件,但软链接文件指向的是目录文件。 - 语法:
- ln 目标文件 硬链接文件:创建硬链接
- ln -s 目标文件 软链接文件:创建软链接
- 什么情况下需要创建软连接?
以安装python3为例,可以通过如下两种方式实现在任意目录下敲python命令
1)把/usr/local/python3/bin添加到环境变量PATH中,然后可以在任意路径下敲python3或者python3.7两个命令,也可以在这个目录下创建一个软链接文件python指向python3或者python3.7,实现效果是可以在任意目录下敲python命令运行python3;
2)可以在/usr/bin目录下创建一个软链接文件python指向/usr/local/python3/bin/python3.7,因为/usr/bin目录默认就是在环境变量PATH中,所以这样就可以直接执行python命令。
echo
- 作用:输出字符到屏幕,一般用来查看环境变量,比如查看环境变量PATH的值可以用echo $PATH
用户和权限管理命令
useradd
- 作用:创建用户
- 格式:useradd 用户名,比如useradd jack这个命令表示创建一个用户jack,用户的家目录是/home/jack,用户的主组是jack;注意只有root能创建新用户
- 常用参数:
- -d:表示指定用户的家目录
- -g:表示指定用户的主组
- cat /etc/passwd:查看系统上有哪些用户
passwd
- 作用:修改用户密码
- 格式:passwd 用户名,root可以改所有用户的密码,自己也可以改自己的密码
userdel
- 作用:删除用户
- 格式:userdel 用户名
- 常用参数
- -r:表示删除用户的同时一并删除家目录
usermod
- 作用:修改用户的家目录、主组、附属组等
- 格式:usermod 用户名 参数
- 常用参数:
- 参数-d:修改家目录
- 参数-g:修改主组
- 参数-G:修改附属组
- 参数-a:添加
id
- 作用:查看用户的信息,包括用户id、用户名称、主组id、主组名称、所有组的id和名称
- 格式: id 用户名
who
- 作用:查看当前在线的用户,如下表示当前root账号有两个会话
- 格式:who 回车
su
- 作用:切换用户
- 格式:su - 用户名
groupadd
- 作用:创建用户组
- 格式:groupadd 组名;
groupdel
- 作用:删除用户组
- 格式: groupdel 组名
chown
- 文件的权限:
- r:读的权限
- w:写的权限
- x:执行的权限
- 对文件来讲,可以把所有用户分为3类:
- 拥有者(owner):文件的拥有者
- 同组用户(group):跟文件的组同组的用户
- 其它用户(other):除了以上两类的其它用户
#文件权限解释
lrwxr-xrw-. 1 root root 4 Dec 14 09:52 test_softlink -> test
说明:
- l:表示文件类型为软链接
- rwx:表示所有者的权限为读、写、执行
- r-x:表示同组用户的权限为读、执行
- rw-:表示其它用户的权限为读、写
- 作用:修改文件所有者(owner)和所在组,如果要改目录,需要加参数-R
- 举例:
- chown mysql /usr/local/mysql/my.cnf 表示把文件/usr/local/mysql/my.cnf所有者改成mysql
- chown -R mysql /usr/local/mysql 表示把目录/usr/local/mysql所有者改成mysql
- chown -R mysql:mysql /usr/local/mysql 表示把目录/usr/local/mysql所有者改成mysql,所属组改成mysql
chgrp
- 作用:修改文件的所属组
- 格式:chgrp 组名 文件名
chmod
- 作用:修改文件的权限
- 文件的权限有3种,分别是:r(读)、w(写)、x(执行)
- 对文件来讲,可以把所有用户分为3种,分别是:user(拥有者)、group(同组的用户)、other(其它的用户)
- 格式:有3种写法
- chmod u+x,go-x test.sh:表示拥有者增加执行权限,同组用户和其它用户取消执行权限
- chmod u=rwx, g=w,o=x test.sh:表示设置拥有者的权限是读、写、执行,同组用户的权限是写,其它用户的权限是执行
- chmod 721 test.sh:表示设置拥有者的权限是读、写、执行,同组用户的权限是写,其它用户的权限是执行
- r:权重为4
- w:权重为2
- x:权重为1
sudo
- 作用:普通用户在做某个操作的时候,可以在命令前加sudo来获取权限
8. 其它基础操作的命令
ping
- 作用:检测网络的连通性、稳定性、网速等
ip addr
- 作用:查看网卡的信息
- 扩展:IP地址
- ip地址=网络地址+主机地址,比如ip:192.168.13.128/24,网络地址是:192.168.13.0,主机地址是128,掩码地址是255.255.255.0, 掩码的作用是定义网络地址的长度
- 255.255.255.0 == 11111111. 11111111. 11111111. 00000000 ,掩码地址与IP地址做位上的与运算,得到网络地址
ifconfig
- 作用:查看网卡的信息
ip[root@instance-06tr1b22 ~]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether fa:27:00:05:38:0a brd ff:ff:ff:ff:ff:ff inet 192.168.0.4/20 brd 192.168.15.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::f827:ff:fe05:380a/64 scope link valid_lft forever preferred_lft forever
lsof -i:端口
- 作用:查看端口是否占用,以及端口的连接情况,如果查出来结果为空就表示端口没有被占用
[root@instance-06tr1b22 ~]# lsof -i:8080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 10175 root 49u IPv6 67990123 0t0 TCP *:webcache (LISTEN)
- 常用端口:
- 20、21:ftp的端口
- 22:ssh的端口、sftp的端口
- 80:默认的http端口
- 443:默认的https端口
- 3306:mysql的默认端口
- 4444:性能监控的serverAgent的默认端口
- 8080:tomcat的默认端口
- 8888:抓包工具fiddler、charles的默认端口
netstat
- 作用:查看端口是否被占用,以及端口的连接情况
ps -ef
- 作用:查看主机上的所有进程,一般跟管道符连接起来用,查看某个进程
- 格式:ps -ef |grep 关键字,比如查看tomcat的进程使用ps -ef |grep tomcat
[root@instance-06tr1b22 ~]# ps -ef |grep tomcat root 10175 1 0 Jun16 ? 00:50:25 /usr/java/jdk1.8.0_181/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=512m -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start root 31314 31141 0 22:18 pts/1 00:00:00 grep --color=auto tomcat
kill 进程编号
- 作用:杀死进程
- 格式:kill 进程编号 或者 kill -9 进程编号(强制杀死进程)
systemctl start|stop|restart|status|disable 服务名
- 作用:启动|停止|重启|查状态某个服务
[root@instance-06tr1b22 ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
service 服务名 start|stop|restart|status
- 作用:启动|停止|重启|查状态某个服务
[root@instance-06tr1b22 ~]# service firewalld.service status Redirecting to /bin/systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
top
- 作用:查看服务器的资源使用情况,实时查询
其中:[root@instance-06tr1b22 ~]# top top_ - 14:11:39 up 122 days, 3:54, 1 user, load average: 1.24, 1.25, 1.15 Tasks: 19 total, 0 running, 19 sleeping, 0 stopped, 0 zombie %Cpu(s): 50.0 us, 0.0 sy, 0.0 ni, 50.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 4045036 total, 142200 free, 3443552 used, 459284 buff/cache KiB Swap: 0 total, 0 free, 0 used. 369352 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 26 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd 36 root 20 0 0 0 0 S 0.0 0.0 80:16.54 kswapd0
- load average: 1.24, 1.25, 1.15 表示过去一分钟、五分钟、以及十五分钟的CPU平均负载;
- us:用户空间占用CPU百分比,也就是应用程序占用的CPU百分比;
- sy:内核空间占用CPU百分比;
- ni:用户进程空间内,改变过优先级的进程占用CPU百分比,进程都有优先级的,如果调节优先级,需要耗费cpu的时间段的,那就消耗这个ni,如果ni很高,那就是进程可能频繁调换优先级;
- id:空闲CPU的百分比;
- wa:CPU等待磁盘写入完成的时间;
- hi:硬中断的CPU百分比;
- si:软中断的CPU百分比,如果程序没有问题,那是没有hi和si的;
- st:虚拟机偷取时间的百分比
iostat
- 作用:监控服务器的磁盘IO情况
- 常用参数:
- -x:显示更多信息
其中:%util表示磁盘IO利用率。[root@instance-06tr1b22 ~]# iostat -x Linux 3.10.0-1160.11.1.el7.x86_64 (instance-06tr1b22) 06/22/2021 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 3.28 0.02 0.46 0.08 0.00 96.16 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util vda 0.01 2.87 0.77 4.94 51.17 42.85 32.94 0.04 8.33 21.69 6.25 0.44 0.25
- -x:显示更多信息
iotop
- 作用:查看每个进程占用的IO
[root@instance-06tr1b22 ~]# iotop Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --system --deserialize 19 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd] 4 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0H]
free
- 作用:查看内存使用情况
- 格式:free -m
[root@instance-06tr1b22 ~]# free -m total used free shared buff/cache available Mem: 3950 3347 121 0 481 378 Swap: 0 0 0
uname -r
- 作用:查询主机的内核版本
[root@instance-06tr1b22 ~]# uname -r 3.10.0-1160.11.1.el7.x86_64
查看CentOS的发行版
cat /etc/redhat-release
[root@instance-06tr1b22 ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
df -Th
- 作用:查看文件系统的使用情况
[root@instance-06tr1b22 ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs tmpfs 2.0G 604K 2.0G 1% /run tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/vda1 ext4 40G 19G 19G 50% / tmpfs tmpfs 396M 0 396M 0% /run/user/0
配置CentOS的静态IP
方法:
1)修改网卡的配置文件,路径是/etc/sysconfig/network-scripts/ifcfg-xxx,把BOOTPROTO改成static,并且在配置文件中手动添加IP地址,配置参考如下
2)配置完成后,需要重启网络服务才能生效,命令:service network restart
Linux上安装软件
在linux上安装软件的几个方法:
- yum install 包名:通过yum管理器来安装软件,它会先下载rpm包,再自动安装。这个的好处是可以自动解决依赖,如果依赖于其他包,会先安装其他包;一般我们在安装一些工具或者命令的时候,用yum的方式安装最简单;
- rpm -ivh 包名:先手动下载rpm包到本地,然后再执行这个命令安装;
- 源码安装:下载源码包——》解压——》配置 configure——》编译 make——》安装 make install;
- 免安装:下载解压启动就可以用。