目录结构
bin:存放一些可执行的指令,也就是一些二进制文件
dev:存放的是外接设备,如光盘,u盘等。在其中的外接设备不能直接使用,必须挂载到某一个地方,才能使用
etc:存放一些配置文件
home:除了root用户,其他用户的家位置,每个用户在home里都有一个以自己名字命名的目录
proc:存放的是系统运行的进程
root:root用户的家目录
sbin:存放的是只用root用户才能用的指令
tmp:存放的是系统运行时产生的临时文件
usr:存放用户自己安装的软件
var:存放系统或者程序的日志文件
基础
ls
作用:列出指定目录下的所有文件和目录
语法:
-a 列出所有文件和目录,包括隐藏文件
-l 列出所有文件和目录,用详细的方式显示
ls 列出当前目录下的所有文件和目录
ls 路径 列出路径下的所有文件和目录
pwd
作用:显示当前所在路径
cd
作用:切换路径
语法:
cd 进入root目录
cd ~ 进入当前用户的家目录
cd . . 进入上一级目录
cd / 进入根目录
cd 路径 进入路径
mkdir
作用:创建目录
语法:
mkdir aaa 创建aaa目录
mkdir -p aa/bb/cc 创建cc目录,如果没有aa或者bb目录,则把aa和bb目录一并创建
touch
作用:创建文件
语法:
touch aaa.txt 创建aaa.txt文件
touch aa/bb/bb.txt 创建bb.txt文件,如果aa或者bb目录不存在,则无法创建
cp
作用:复制文件或者目录到指定位置
语法:
cp 被复制的文件或目录 要复制到的路径
-r 复制目录时要添加 -r 表示递归处理,把目录内的所有东西都复制过去
cp a.java /root/aaa 把a.java文件复制到/root/aaa目录内(也可以同时改名,但一般不这么做)
mv
作用1:移动文件或者目录
语法:
mv 要移动的文档 要移动到的目标路径(移动时也可以改名)
作用2:修改文档名字
语法:
mv 源文件 新文件名
rm
作用:删除文件或者目录
语法:
-r 删除目录时要加,表示递归,否则无法删除目录
-f 删除时不再询问“是否删除”
一般用法:rm -rf 文档
vim / vi
作用:编辑文件
用法:
vim 文件名(此时进入命令行模式)
按下 i 键,就可以编辑了(此时是编辑模式)
按下 esc 键(此时进入命令行模式)
按下 :w q(w q 表示写入保存,让后退出,如果不想保存可以按 : q !,!表示强制)
>和>>
作用:输出重定向,将符合左边的输出内容写到符号右边的文件中
" > ":覆盖输出,会把文件原来的内容覆盖掉
" >> ":追加输出,在原来文件内容后加上这次的内容
如:查看/root目录内的文档详情,并把内容写到 abc.txt 文件中
ls /root > abc.txt
cat
作用:查看文件内的内容
语法:cat 文件
进阶
df
作用:查看磁盘空间
-h 以较高可读性的形式显示
free
作用:查看内存使用情况
-h 以较高可读性的形式显示
-m 以m为单位显示
Swap:用于临时内存,当系统真是内存不够用时可以临时使用磁盘空间来充当内存
head
作用:查看文件的前几行
head 文件 查看文件的前十行内容
head -6 文件 查看文件的前6行内容
tail
作用:查看文件
tail 文件 查看文件最后十行内容
tail -6 文件 查看文件最后6行内容
tail -f 文件 动态查看文件最后十行内容,一般用于查看日志
tail -200f 文件 动态查看文件最后200行内容,一般用于查看日志
ctrl+c 退出
more
作用:查看文件,以较多的内容查看,之后按回车键看下面的,退出按q键(c+c也可以退出)
语法:more 文件
less
作用:查看文件,以较少的内容查看,之后按上下键或者回车键看下面的,退出按q键
语法:less 文件
比如一个文件内容较多,一个屏幕放不下,可以用这个指令,一部分一部分查看
wc
作用:统计文件内容信息(包括行数,单词数,字节数)
语法:
wc -lwc 文件名
-l:lines,显示行数
-w:words,显示单词数,依照空格来判断单词的数量
-c:bytes,显示字节数
date(重点)
作用:表示操作时间日期(读取,设置)
date 2022年 11月 19日 星期六 22:51:31 CST
date +%F 2022-11-19
date "+%F %T" 2022-11-19 22:52:03,引号表示让“年月日时分秒”成为一个整体
date -d "-1 day" "+%F %T" 昨天的时间,2022-11-18 22:57:54
date -d "+2 year" "+%F %T" 2年后的日期,2024-11-19 22:58:12
date -d "-3 month" "+%F %T" 3个月前的日期,2022-08-19 22:58:19
cal
作用:用来操作日历
cal 显示当月日历
cal -1 显示当月日历
cal -3 显示上月,当月,下月的日历
cal -y 2018 显示2018年的日历
cal -s 显示当月日历,第一列是周日
cal -m 显示当月日历,第一列是周一
clear 或者 ctrl + L
作用:清屏
管道 |
作用:将管道符前面的输出当做管道符后面的输入
如:在当前进程中找到与java有关的进程
ps -ef | grep java
grep
作用:过滤
如:在当前进程中找到与java有关的进程
ps -ef | grep java
高级
useradd
作用:添加用户
hostname
作用:操作服务器的主机名(读取,设置)
hostname 输出完整的主机名
hostname -f 输出当前主机名中的FQDN(全限定域名)
id
作用:查看一个用户的一些基本信息(包含用户id,用户组id,附加组id等)
id 显示当前执行该命令的用户的基本信息
id 用户 显示该用户的基本信息
uid:用户id
gid:组id
组:附加组
环境:环境变量
用户信息存放的位置:/etc/passwd
用户组信息存放的位置:/etc/group
whoami
作用:显示当前登录的用户名,一般用于shell脚本,用于获取当前操作的用户名方便记录日志
whoami 显示当前登录的用户名
ps
作用:查看服务器的进程信息
选项:
-e 表示列出全部的进程,等价于“-A”
-f 表示显示全部的列(显示全字段)
UID:执行该进程的用户id
PID:进程id
PPID:该进程的父级进程id,任何进程都是由其父级进程启动的,如果一个进程没有父级进程,该进程为僵尸进程
C:cpu的占用率,其形式是百分比形式
STIME:进程的启动时间
TTY:终端设备,发起该进程的终端设备标识符,“?”表示该进程不是由终端设备发起的,而是由系统发起的
TIME:进程的执行持续时间
CMD:改进程的名称或者对应的路径
top
作用:动态显示进程占用服务器的资源
进入:top
退出:按下q键
PID:进程id USER:执行该进程的用户 PR:优先级,值越大越先执行 NI:全称是 NICE,是用于改变进程的静态优先级 VIRT:虚拟内存 RES:常驻内存 SHR:共享内存 S:进程的状态(S表示睡眠,R表示运行) %CPU:表示CPU的占用百分比 %MEM:表示内存的占用百分比 TIME+:执行持续时间 COMMAND:进程的名称或者路径 在运行top的时候,可以按下以下快捷键: M:表示将结果按照内存(MEM)从高到低降序排列 P:表示将结果按照CPU占用率从高到低降序排列 1(数字1):当服务器有多个cpu时,可以显示每个cpu的使用情况
du -sh
作用:查看目录的真实性大小
语法:du -sh 目录路径
选项含义:
-s:summaries,只显示汇总的大小
-h:以较高可读性的形式显示
find
作用:用于查找文档
语法:find 路径范围 选项 选项的值
选项:
-name:按照文档名称搜索
-type:按照文档类型搜索,f 表示文件,d 表示目录。
名称和类型同时用时无先后顺序
如:查找/rwh 下的a.java文件
service
作用:用于控制一些软件的服务启动/停止/重启
语法:service 服务名 start/stop/restart
kill
作用:杀死进程
语法:kill 进程pid
kill -9 进程id 强制杀死进程
与kill作用相似的有一个 killall 杀死所有进程,killall httpd 杀死所有 httpd 的进程,包括主进程和子进程
ifconfig
作用:用于操作网卡相关的指令,显示ip地址
reboot
作用:重启计算机
语法1:reboot 重启
语法2:reboot -w 模拟重启,但是不重启(只写关机开机的日志信息),不常用
shutdown
作用:关机(慎用)
语法:shutdown -h now "关机提示" 立即关机
shotdown -h 12:01 "关机提示" 定时关机,12:01时关机
如果想要取消关机计划,方法为:
1.centos7版本之前,ctrl+c
centos7以及之后,shotdown -c
关机的其他指令: #init 0 #halt #powe
uptime
作用:输出计算机的持续在线时间(计算机从开机到现在的时间)
语法:#uptime
22:37:47 当前时间 5:40 持续了5分40秒 1 user 1个用户连接 load average 挂载,数字越小,服务器压力越小,数字越大,服务器压力越大 0.01 最近1分钟的挂载 0.04 最近5分钟的挂载 0.09 最近15分钟的挂载
uname
作用:获取计算机操作系统相关信息
语法1:#uname 只获取操作系统的类型
语法2:#uname -a all,表示获取全部的系统信息
1.操作系统 2.计算机名 3.内核版本,并不是发行版本,如centos7 4,出厂日期及版本 5.加入了GUN计划,是开源软件
netstat -tnlp
作用:查看网络连接状态
语法:#netstat -tnlp
选项说明:
-t 只列出tcp协议的连接
-n 将地址用字母变成ip地址,将协议转化成端口号来显示
-l 过滤出状态“State”字段为“LISTEN”,的连接,"LISTEN"表示监听
-p 显示发起连接的进程pid和进程名称
man
作用:manual,手册(包含了Linux中全部命令手册,英文)
语法:#man 命令 ,表示查看某个命令的用法(退出按q键)
例如:#man cp
wget
作用:从网上下载东西
语法:wget 地址
如:下载nginx压缩包
wget https://nginx.org/download/nginx-1.23.2.tar.gz
tar
作用:打包压缩文件,或者解压文件
打包压缩:
tar -zcvf 打包压缩后的文件名 要打包的文件
解压文件:
tar -zxvf 压缩文件
chmod
作用:权限相关
语法:
chmod [ 参数 ] [ <权限范围><符号><权限代号> ]
参数解释:
-R 递归处理,将指定目录下的所有文件及子目录一并处理
权限范围:
u:user,即文件或目录的拥有者
g:group,即文件或目录的所属群组
o:other,除了文件或目录拥有者和其所在的群组之外的,其他用户
a:all,及全部的用户,包括拥有者,其所在群组的成员,其他用户
符号解释:
+:添加权限
-:取消权限
=:重置权限
权限代号:
r:读取权限,数字代号为4
w:写入权限,数字代号为2
x:执行或切换权限,数字代号为1
-:不具有任何权限,数字代号为0
举例:
chmod u+x 1.txt 给1.txt的拥有者添加执行权限,这种写法稍微有点麻烦,开发中一般使用数字代号
chmod 755 1.txt 给1.txt的拥有者设置读写执行权限,给所属组添加读和执行权限,给其他用户添加读和执行权限
chmod 777 1.txt 给所有人添加对此文件操作的所有权限
crontab
作用:定时任务
语法:
-e 编辑定时任务
-l 列出所有定时任务
-r 停止并删除定时任务
-u 指定的用户,如果不指定,则表示当前用户
service crond restart 重启定时任务
计划任务编辑规则:
以行为单位,一行是一个计划,日和周中一般只写一个 分 时 日 月 周 需要执行的命令 取值范围: 分:0-59 时:0-23 日:1-31 月:1-12 周:0-6,0表示星期天 四个符号: *:表示取值范围中的每一个数字 -:连续区间表达式,要想1号到7号都执行,则在日上写 1-7 /:表示每多少个,比如想要10分钟执行一次,则可以在分上写:*/10 ,:表示多个值,比如想要1点,2点,6点执行,则可以在时上写:1,2,6 举例: 0 0 * * * reboot 每天0点0分重启 */10 * * * * ls -l / > /root/a.txt 每隔十分钟把根目录下的内容写到/root/a.txt文件中
快捷键
c+u:删除光标前的所有内容
c+k:删除光标后的所有内容
shell
代码规范
#!/bin/bash(告知系统当前这个脚本要使用的shell解释器)
shell相关命令
文件命名规范
文件名.sh(.sh是linux下bash shell的默认后缀)
运行方法
文件必须有可执行权限
用./***.sh或者/root/***.sh(绝对路径)运行
/bin/bash 文件名(或文件绝对路径),不常用
sh 文件名
单双引号区别
双引号:可以识别括起来的变量,可以实现转义(类似于“\*”)
单引号:原样输出,里面括起来的是什么,就输出什么
反引号
当脚本中需要执行一些指令并且将执行结果赋值给变量的时候,需要使用反引号(esc键下面那个键)
案例:输出当前时间
变量
定义形式:class_name='yunwei'
使用形式:echo $class_name
变量名规范:
1.变量名后面的等于号左右不能有空格
2.变量名只能使用英文,数字和下划线,首个字符不能是数字
3.名字中间不能有空格,可以用下划线
4.不能使用标点符号
5.不能使用bash里的关键字
只读变量(了解)
语法:readonly 变量名
案例:定义一个变量a=10,输出a,随后把a变为只读变量,给a赋值为20,再输出a
接受用户输入(重点)
语法:read -p 提示信息 变量名
案例:让用户输入密码,并把密码打印出来
删除变量(了解)
语法:unset 变量名
案例:定义变量b=20,输出b的值,随后删除b,再输出b
条件判断语句
语法一: if condition then command fi (fi表示if的闭合,表示条件判断结束) 语法二: if condition then command else conmand fi 语法三: if condition1 then command elif condition2 then conmand else command fi
运算符
算术运算符
expr 命令
作用:用来进行数学运算
如:要算3+2,则可以写 expr 3 + 2
加法 expr 3 + 2
减法 expr 3 - 2
乘法 expr 3 \* 2
除法 expr 3 / 2
取余 expr 3 % 2
等于 ==
不等于 !=
注意:expr 后面要有空格,3 和运算符之间也要有空格,2和运算符之间也要有空格
关系运算符
等于 -eq 不等于 -nq 大于 -gt 小于 -lt 大于等于 -ge 小于等于 -le
逻辑运算符
条件:a=10 b=20
! 非运算,取反 [ ! false ]返回 true
-o 或运算,有一个为真则为真 [ $a -lt 20 -0 $b -gt 100 ]返回true
-a 与运算,两个都为真则为真 [ $a -lt 20 -a $b -gt 100 ]返回false
字符串运算符
条件:a="abc" b="efg"
= 检测两个字符串是否相等,相等返回true [ $a = $b ]返回false
!= 检测两个字符串是否相等,不相等返回true [ $a != $b ]返回true
-z 检测字符串长度是否为0,为0返回true [ -z $a ]返回false
-n 检测字符串长度是否为0,不为0返回true [ -n $a ]返回true
str 检测字符串是否为空,不为空返回true [ $a ]返回true
文件测试运算符
file=/root/aaa
-d file 检测文档是否是目录,是的话返回true [ -d $file ]
-f file 检测文档是否是文件,是的话返回true
-r file 检测文档是否可读,是的话返回true(只要有一个人或组可读,就是true)
-w file 检测文档是否可写,是的话返回true
-x file 检测文档是否是可执行,是的话返回true
-s file 检测文档是否为空,不为空的话返回true
-e file 检测文档是否存在,是的话返回true
软件安装方式
源码包
这种方式安装时容易出错,因为安装的时候可能需要很多依赖。
但是一般都用这个方式安装软件,因为这样可以把软件的性能发挥到最大,而且自己也熟悉安装在哪里了
比如安装mysql,先下载mysql的压缩包
一般在/usr/local 下创建一个目录mysql,之后把mysql安装在这里
解压压缩包,此时会有一个同名的目录,叫mysql(不是刚创建的目录)
配置(config / configure / bootstrap)
编译(make / bootstrapd)
安装(make install / bootstrapd install)
配置操作主要是指定软件的安装目录,需要的依赖在什么地方,指定不需要的可选依赖,配置文件的路径,通用数据存储位置等等。如配置的时候可以加以下参数:
指定安装的路径:--prifix=路径
需要依赖的路径:--with-PACKAGE 名=包所在的路径
不需要依赖:--without-PACKAGE 名
二进制包(rpm)
略过,开发一般不用这个
yum等傻瓜式安装
优点:安装简单,快捷
缺点:完全丧失了自定义性
注意:如果不更改软件来源的情况下,是需要联网才能使用的
常用的 yum 指令:
#yum list 列出当前已经装的和可以装的软件(全部)
#yum search 软件名 搜索指定的关键词的软件
#yum [-y] install 软件名 安装指定的软件(-y表示允许,不再确认)
#yum [-y] update 软件名 更新指定的软件,不指定名字则更新所有软件
#yum [-y] remove 软件名 卸载指定的软件,使用时不要加-y,因为卸载某个软件时,可能还要卸载它依赖的一些东西,但是这些东西可能其他软件也要用,卸载了其他软件就不能用了
卸载软件
rm -rf 安装的目录 注意:卸载一个编译安装的软件时必须先停止该软件的运行
防火墙
开启防火墙:systemctl start firewalld
重启防火墙:systemctl restart firewalld
关闭防火墙:systemctl stop firewalld
设置开机启动:systemctl enable firewalld
停止并关闭开机启动:systemctl disable firewalld
查看防火墙状态:systemctl status firewalld 或者 firewalld -cmd --state