基本知识
$:当前登录用户为普通用户
#:当前登录用户为系统管理员
/ :斜杠表示根目录
~:为属主目录
文件名前面有 . 代表隐藏文件
颜色:
白色 普通文件 例如:txt、word等
蓝色 目录文件 例如:目录
红色 压缩文件 例如:qq.zip
青色 链接文件 例如:快捷方式
绿色 可执行文件 例如:exe文件
创建隐藏文件,文件前面+
Linux严格区分大小写
快捷键
- Tab键 自动完成未输入完的名称,如果输入的字符能够匹配到多个对象则需要再按一下Tab键列出能匹配到的所有文件
- ↑键:返回上一个命令
- ↓键:返回下一个命令
- clear或者Ctrl+l 清屏
- 就到这吧,太多了。
文件类命令
su(switch user)切换用户:
- 管理员切换到普通用户不需要密码**
- 切换用户输入密码是不显示的
#切换账号到HW用户
[root@localhost /]# su HW
#切换到管理员用户
[HW@localhost /]$ su root
密码:
[root@localhost /]#
ls(list files):列出指定目录下的内容
- -a,-all
- -l,-long:
#显示所有文件包括隐藏文件
[root@localhost ~]# ls -a
#显示文件的详细属性信息,可用ll简写
[root@localhost ~]# ls -l
pwd(print working directory):显示当前所在路径
#显示当前所在路径
[root@localhost ~]# pwd
/root
cd(change directory):切换目录
- 绝对路径:从根目录出发,到目标位置的路径,例如:cd /home/HW
- 相对路径:从当前目录出发,到目标位置的路径,例如:cd install/tomcat_aeaicrm_v1.0.3
#绝对路径,切换到根目录下的home目录下的HW目录里
[root@localhost ~]# cd /home/HW
[root@localhost HW]#
#相对路径,从当前目录切换到install目录下的tomcat_aeaicrm_v1.0.3目录中
[root@localhost ~]# cd install/tomcat_aeaicrm_v1.0.3
[root@localhost tomcat_aeaicrm_v1.0.3]#
mkdir(make directory):创建目录
- mkdir 目录1 目录2 目录3,可以同时创建多个目录,用空格隔开
- mkdir -p 目录1/目录2,在目录1中创建目录2
-p 创建子目录,如果父目录不存在则创建父目录
#在当前目录新建dir1 dir2 dir3三个目录
[root@localhost test]# mkdir dir1 dir2 dir3
#在当前目录新建层级目录,层级为test1下有test2下有test3
[root@localhost test]# mkdir -p test1/test2/test3
注:可以用tree命令来查看层级目录,如下:输入后显示未找到命令。则输入yum install tree来下载。等待一会,会显示Is this ok [y/d/N]:输入y即可下载成功!
[root@localhost test]# tree
-bash: tree: 未找到命令
[root@localhost test]# yum install tree
已加载插件:fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/2): extras/7/x86_64/primary_db | 243 kB 00:00:00
(2/2): updates/7/x86_64/primary_db | 13 MB 00:01:07
Determining fastest mirrors
* base: mirrors.bupt.edu.cn
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 tree.x86_64.0.1.6.0-10.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
======================================================================================
Package 架构 版本 源 大小
======================================================================================
正在安装:
tree x86_64 1.6.0-10.el7 base 46 k
事务概要
======================================================================================
安装 1 软件包
总下载量:46 k
安装大小:87 k
Is this ok [y/d/N]: y
Downloading packages:
tree-1.6.0-10.el7.x86_64.rpm | 46 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告:RPM 数据库已被非 yum 程序修改。
** 发现 2 个已存在的 RPM 数据库问题, 'yum check' 输出如下:
2:postfix-2.10.1-6.el7.x86_64 有缺少的需求 libmysqlclient.so.18()(64bit)
2:postfix-2.10.1-6.el7.x86_64 有缺少的需求 libmysqlclient.so.18(libmysqlclient_18)(64bit)
正在安装 : tree-1.6.0-10.el7.x86_64 1/1
验证中 : tree-1.6.0-10.el7.x86_64 1/1
已安装:
tree.x86_64 0:1.6.0-10.el7
完毕!
[root@localhost test]# tree
.
├── dir1
├── dir2
├── dir3
└── test1
└── test2
└── test3
6 directories, 0 files
rmdir(remove directory):删除目录
- -p是当前子目录被删除后使它也空目录的话,则顺便一并删除
- rmdir只能删除空目录
[root@localhost test]# rmdir -p test1/test2/test3
[root@localhost test]# tree
.
├── dir1
├── dir2
└── dir3
3 directories, 0 files
touch:新建文件
# 新建一个叫file1.txt的文件
[root@localhost test]# touch file1.txt
[root@localhost test]# ll
总用量 0
drwxr-xr-x. 2 root root 6 12月 28 06:51 dir1
drwxr-xr-x. 2 root root 6 12月 28 06:51 dir2
drwxr-xr-x. 2 root root 6 12月 28 06:51 dir3
-rw-r--r--. 1 root root 0 12月 29 03:52 file1.txt
rm(remove):删除文件
- -r 递归处理,删除目录的同时也删除目录中的子文件
- -f 强制执行
# 删除file1.txt文件
[root@localhost test]# rm file1.txt
rm:是否删除普通空文件 "file1.txt"?y
# 直接删除test1目录下的file1.txt文件,但不会删除test1目录
[root@localhost test]# rm test1/file1.txt
rm:是否删除普通空文件 "test1/file1.txt"?y
# 删除test1目录下的file1.txt文件,顺便也可以删除test1目录
[root@localhost test]# rm -r test1
rm:是否进入目录"test1"? y
rm:是否删除普通空文件 "test1/file1.txt"?y
rm:是否删除目录 "test1"?y
# 强制删除test1目录
[root@localhost test]# rm -rf test1
vi:文档编辑器
- 一般模式,只能看不能写
- 按a/i/o进入编辑模式
- 按Esc退出编辑模式,回到命令行模式
- 输入:进入命令行模式(w保存,q退出,!强制执行)
- vi文件名,如果文件存在,则直接打开文件
- vi文件名,如果文件不存在,则先新建文件,再打开文件
- vi 则先打开一个临时文件,需要在退出时给出文件名。
使用vi、vim编辑文件,实际是先copy一份临时文件并映射到内存里进行编辑,所以你编辑的是临时文件,不是源文件,直到你输入:w命令后才保存临时文件到源文件;输入:q退出才删除临时文件
这个你们自己操作就可以了cp(copy):复制文件
- cp 源文件 目标文件 目标文件不存在,复制源文件生成目标文件
目标文件是目录,复制源文件到目录中,生成同名文件
目标文件是存在的文档,复制源文件,覆盖目标文件- cp a b c … … z 把前面所有的文件都复制到目录中
- -r 递归处理,复制目录的同时复制目录中的子文件
# 复制一个test1.txt文件为test2.txt文件,test2.txt不存在
[root@localhost test]# cp test1.txt test2.txt
# 复制test1.txt文件到dir目录里,生成同名文件
[root@localhost test]# cp test1.txt dir
# 使用test1.txt的文档覆盖掉test2.txt文档的内容
[root@localhost test]# cp test1.txt test2.txt
cp:是否覆盖"test2.txt"? y
# 将test1.txt test2.txt都复制到dir目录里
[root@localhost test]# cp test1.txt test2.txt dir
# 复制目录
[root@localhost test]# cp -r dir dir2
mv(move):移动文件
- mv 源文件 目标文件 目标文件不存在,重命名
目标文件是目录,把源文件移动到目标中
目标文件是文件,把源文件内容移动替换到目标文件中,进行覆盖- mv a b c … … z 把前面所有的文件都移动到目录z中
# xiaowang.txt不存在,将xiaozhang.txt重命名为xiaowang.txt
[root@localhost test]# mv xiaozhang.txt xiaowang.txt
# 将xiaowang.txt移动到dir目录中
[root@localhost test]# mv xiaowang.txt dir
# 目标文件是文件,把源文件的内容移动到替换到目标文件中,进行覆盖[root@localhost test]# mv test1.txt test2.txt
mv:是否覆盖"test2.txt"? y
# 将test1.txt test2.txt移动到dir目录中
[root@localhost test]# mv test1.txt test2.txt dir
reboot
- 重新启动
shutdown
- 关机
- shutdown -r now(重新启动)
man和 – help
- 帮助命令
[root@localhost ~]# man ls
[root@localhost ~]# ls --helpcat:显示文件的所有内容
- -n 显示行号
- 一般比较适用于文件内容较少的情况
[root@localhost test]# cat -n hello.txt
1 hello world
more:分页显示文件内容
- 空格 下一页
- b 上一页
- q 退出
- +n 从第n行开始显示
- -n 每页显示n行
- more如果查看到最后一行后会回到命令行
# 从第2行开始显示每页显示3行
[root@localhost test]# more +2 -3 hello.txt
2
3
4
--More--(29%)
less:分页显示文件内容
相比较于more来说更强大,可以用pagedown和pageup逐行显示,也可以使用/的搜索功能
- ↑ 上一行
- ↓ 下一行
- shift + g 可以直接翻页到文本的最下方
- less如果查看到最后一行后不会回到命令行
- 搜索使用/后面接你要搜索的内容
- -N 显示行号
- 搜索后按q键退出,回到命令行
# 直接跳到hello.txt文档中内容为10的位置
[root@localhost test]# less -p "10" hello.txt
head -x 文件名,显示文件前x行内容(默认10行)
# 显示hello.txt文件前10行的内容
[root@localhost test]# less -p "10" hello.txt
tail 显示文件后面的内容
- tail -x 文件名,显示文件后x行内容(默认10行)
- -f 实时刷新
- tail -f 命令常用于实时打印日志
# 默认显示hello.txt文件的后10行
[root@localhost test]# tail hello.txt
文件权限管理
- 权限分为9个字母
前3位 所有者 u user
中3位 所属组 g group
后3位 其他用户 o other- r读4,w写2,x执行1
chmod:改变文件权限
# 改变hello.txt文件权限为所有角色都可读可写可执行
[root@localhost test]# chmod u=rwx,g=rwx,o=rwx hello.txt
# 第二种方法,r+w+x=7
[root@localhost test]# chmod 777 hello.txt
[root@localhost test]# ll hello.txt
-rwxrwxrwx. 1 root root 27 12月 30 03:02 hello.txt
chown:改变文件的所有者和所属组
- chown x:y 文件名,把文件所有者改为x,所属者改为y
- chown x 文件名,把文件所有者改为x
- chown :y 文件名,把文件所属组改为y
- -R 修改目录同时修改目录里的所有者和组
# 把hello.txt文件的所有者和所属组都改为HW
[root@localhost test]# chown HW:HW hello.txt
-rwxrwxrwx. 1 HW HW 27 12月 30 03:02 hello.txt
# 把hello.txt文件的所有者改为root
root@localhost test]# chown root hello.txt
-rwxrwxrwx. 1 root HW 27 12月 30 03:02 hello.txt
# 把hello.txt文件的所属组改为root
[root@localhost test]# chown :root hello.txt
-rwxrwxrwx. 1 root root 27 12月 30 03:02 hello.txt
硬链接和软链接
- ln [参数] 源文件
- -d 硬链接 作用:备份
- -s 软链接 作用:创建一个快捷方式
- 硬链接于源文件是同一个文件,软链接仅是一个快捷方式
- 目录不能创建硬链接只能创建软链接
# 创建软链接,test3.txt不能存在
[root@localhost dir]# ln -s test1.txt test3.txt
-rw-r--r--. 1 root root 9 12月 30 02:51 test1.txt
lrwxrwxrwx. 1 root root 9 12月 30 04:02 test3.txt -> test1.txt
# 创建硬链接,test4.txt不能存在,test4.txt中的内容会随着test1.txt的内容改变而改变
[root@localhost dir]# ln -d test1.txt test4.txt
-rw-r--r--. 2 root root 9 12月 30 02:51 test1.txt
-rw-r--r--. 2 root root 9 12月 30 02:51 test4.txt
网络
ping:测试网络连接情况
- -c ping的次数
- 按Ctrl + c终止,不然会一直执行
# ping 5次百度
[root@localhost ~]# ping -c 5 www.baidu.com
ifconfig:配置网络信息
- 查看IP地址,也可以使用ip addr
netstat 查看计算机当前的网络连接 | 进程连接 | 端口占用
- 选项
-a:展示监听和建立状态的进程信息
-t:tcp协议
-p:显示链接的程序名
-l:监听
-n:显示ip地址和端口号
o:包含和网络通讯的时间
# 常用下面两个
[root@localhost ~]# netstat -anop
[root@localhost ~]# netstat -tpln
- 如果你的计算机中的6060端口被进程占用了,应该怎么处理。
- 把连接了我的CentOS系统的人踢下线
- netstat -tpln|grep :6060
- kill -9 pid
进程管理
ps:查看进程信息
- 进程是正在运行中的程序
- 常用命令
-a 查看所有前台进程 命令行输入的命令,和Linux交互的进程
-x 查看所有后台进程 守护进程,启动了一个服务,它自己在后台运行
-u 显示这个进程是由哪个用户产生的- 前台进程:是在终端中运行的命令,那么该终端就位进程的控制终端,一旦这个终端关闭,这个进程也随之消失
- 后台进程:也叫守护进程,是运行在后台的一种特殊进程,不受终端控制,他不需要终端的交互;Linux的大多数服务器就是使用守护进程实现的。
**主要关注pid,进程名称,MEM,CPU
# 查看系统中的所有进程
[root@localhost ~]# ps -aux
USER // 该进程是由哪个用户产生的
PID // 进程的ID号
%CPU //进程占用的CPU百分比,占用越高,进程越耗费资源
%MEM //占用内存的百分比,占用越高,进程越耗费资源
VSZ //该进程使用的虚拟內存量(KB)
RSS //该进程占用的实际物理內存量(KB)
STAT //进程的状态,常见状态有:R:运行,S:睡眠,T:停止,s:包含子进程,+:位于后台
START //该进程被触发启动时间
TIME //该进程实际使用CPU运行的时间
COMMAND //产生此进程的命令名
top:查看系统健康状态
- P:以CPU使用率排序
- M:以内存使用率排序
- N:以PID排序
- q:退出
管道
- 符号是 “|” ,将两个命令隔开,符号左边命令的输出就作为右边命令的输入
# 查看mysql的进程网络状态
[root@localhost ~]# netstat -tpln | grep mysql
tcp6 0 0 :::3306 :::* LISTEN 1503/mysqld
grep
- 基于正则表达式查找满足条件的行
-v 显示不被pattern匹配到的行
-i 忽略字符的大小写
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-E 使用扩展正则表达式
# 查询test.txt文件里hello出现了多少次
[root@localhost ~]# grep -c hello test.txt
# 查询mysql进程的网络状态
[root@localhost ~]# netstat -tpln | grep mysql
# 查找abc字符并忽略大小写
[root@localhost ~]# echo "ABC" | grep -i abc
# 查询进程 | 以bash过滤 |过滤不包含grep字符的进程
[root@localhost ~]# ps -ef | grep bash | grep -v grep
root 2451 653 0 16:54 tty1 00:00:00 -bash
root 2640 2634 0 17:31 pts/0 00:00:00 -bash
# 仅匹配第一个数字是0到9第二个数字是4或者是数字76的数
[root@localhost ~]# echo "1234 7654" | grep -oE "[0-9]4|76"
34
54
文件查找
- find “路径” -name 字符串(查找当前目录下的文件不用加路径)
查找文件所在的位子
find -name “.*”:查找当前面录下子目录以及子目录中所有的隐藏文件的路径- whereis 查看程序所在的位置
# 查找当前目录下test子目录下的test.txt文件
[root@localhost ~]# find test/ -name test.txt
test/test.txt
文件的压缩与解压
- gzip
gzip -n 文件名
n可以取1-9,分别代表不同级别的压缩,1压缩包大速度快,9压缩包小速度慢
只能压缩单个文件,不能压缩目录
压缩后的文件是"文件名.gz"
gzip -d 文件名,解压.gz的压缩包- tar
-z 使用gzip工具进行压缩
-c 创建文件包
-x 解开文件包
-v 打包和解包时,显示详细过程
-f 打包的内容是文件
tar -zcvf 打包并压缩
tar -zxcf 解压
注:f不能在前面- zip
zip xxx.zip a b c 把文件a b c 添加到压缩包xxx.zip中
# 压缩
[root@localhost /]# gzip -1 hello.txt
# 解压
[root@localhost /]# gzip -d hello.txt.gz
# 打包并压缩
[root@localhost /]# tar -zcvf hello.txt.tar.gz hello.txt
# 解压
[root@localhost /]# tar -zxvf hello.txt.tar.gz
#把hello1.txt hello2.txt hello3.txt添加到压缩包hello.zip中
[root@localhost ~]# zip hello.zip hello1.txt hello2.txt hello.txt
#解压
[root@localhost ~]# unzip hello.zip
就到这里了!bye!