01、基本命令格式
命令提示符
[root@localhost ~]#
其中:
root 当前登陆用户
localhost 主机名
~ 当前所在目录(家目录)
如果是root代表/root;
如果是普通用户user1代表/home/user1
# 超级用户提示符
$ 普通用户提示符
---------------------------------------------------------------------------------
命令格式
命令 [选项] [参数]
注意: 个别命令的使用不遵循此格式
当有多个选项时,可以写在一起
简化选项与完整选项
-a 等于 --all
---------------------------------------------------------------------------------
查询目录中内容:ls
ls [选项] [文件或目录]
选项:
-a 显示所有文件,包括隐藏文件
-l 显示详细信息
-h 人性化显示文件大小
02、文件处理命令
#查询目录所在位置:pwd
pwd
命令英文原意:print working directory
---------------------------------------------------------------------------------
#切换所在目录:cd
cd [目录]
命令英文原意: change directory
简化操作:
cd ~ :切换到用户目录(家目录)
cd :切换到用户目录
cd - :切换到上一个访问目录
cd .. :切换到上一级目录
---------------------------------------------------------------------------------
#创建文件:touch
touch 文件名
---------------------------------------------------------------------------------
#建立目录:mkdir
mkdir -p [目录名]
-p:递归创建
命令英文原意:make directories
mkdir 目录名:创建目录
mkdir -p xx/yy/zz:创建多级目录
---------------------------------------------------------------------------------
#删除空目录:rmdir
rmdir [目录名]
命令英文原意:remove empty directory
rmdir 目录:删除目录(目录为空时执行)
---------------------------------------------------------------------------------
#删除目录或文件:rm
rm -rf [文件或目录]
命令英文原意:remove
选项:
-r 递归删除目录
-f 强制
rm -r 目录:递归删除文件夹,带提示
rm -f 文件:删除文件
rm -rf 文件、文件夹:递归删除,无提示
###禁止:rm -rf /* 删除所有文件###
---------------------------------------------------------------------------------
#复制命令:cp
cp [选项] [原文件或目录] [目标目录]
命令英文原意:copy
选项:
-r 复制目录
cp 源文件 备份文件:备份文件
cp -r 源目录 目标目录
---------------------------------------------------------------------------------
剪切或改名命令:mv
mv [原文件或目录] [目标目录]
命令英文原意:move
mv 原文件 目标文件目录 :剪切
mv 原文件 不存在的文件 :重命名
mv 原文件 文件夹/不存在的文件 :剪切重命名
03、文件搜索命令
命令搜索命令
搜索命令所在路径及帮助文档所在位置:whereis
whereis 命令名
选项:
-b 只查找可执行文件
-m 只查找帮助文件
---------------------------------------------------------------------------------
搜索命令所在路径及别名:which
which 命令名
---------------------------------------------------------------------------------
PATH环境变量:定义的是系统搜索命令的路径
相当于window下的path
echo $PATH : 查看环境变量
文件搜索命令:find
find [搜索范围] [搜索条件]
示例:
find / -name install.log
#避免大范围搜索,会非常耗费系统资源
#find是在系统当中搜索符合条件的文件名.如果需要匹配,
#使用通配符匹配,通配符是完全匹配
find /root -iname install.log #按名字查询: 不区分大小写
find /root -user root #按照所有者搜索
find /root -nouser #查找没有所有者的文件
---------------------------------------------------------------------------------
linux中的通配符:
# (查找多文件是需要加'' ,example:find /experiment/ -name '斗*')
* 匹配任意内容
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符
---------------------------------------------------------------------------------
按时间查询:
find /var/log -mtime +10
#查找10天前修改的文件
-10 10天内修改文件
10 10天当天修改的文件
+10 10天前修改的文件
atime 文件访问时间 access访问
ctime 改变文件属性时间 change 改变
mtime 修改文件时间 modify 修改
---------------------------------------------------------------------------------
按文件大小查询:
find / -size 25k
#查找文件大小是25KB的文件,注意k是小写的
-25k 小于25KB的文件
25k 等于25KB的文件
+25k 大于25KB的文件
find / -size 25M
#查找文件大小是25MB的文件,注意M是大写的
---------------------------------------------------------------------------------
find /etc -size +20k -a -size -50k
#查找/etc/目录下,大于20KB并且小于50KB的文件
-a and 逻辑与,两个条件都满足
-o or 逻辑或,两个条件满足一个即可
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
#查找/etc/目录下,大于20KB并且小于50KB的文件,并显示详细信息
#-exec {} \;这是固定格式
字符串搜索命令:grep
grep [选项] 字符串 文件名
#在文件当中匹配符合条件的字符串
选项:
-i 忽略大小写
-v 排除指定字符串
find命令和grep命令的区别
find命令:在系统中搜索符合条件的文件名
grep命令:在文件中搜索符合条件的字符串
04、帮助命令
man
#查看命令的帮助
man 命令名
05、压缩与解压缩命令
.zip格式
先安装zip 软件
yum install zip
yum install -y zip :不带确认的安装
卸载:
yum remove zip
yum remove unzip
--------------------------------------------------------------
zip
#压缩文件
zip 压缩文件名.zip 原文件
zip -r 压缩文件名.zip 原文件夹(-r 递归,压缩文件夹(目录)时使用)
--------------------------------------------------------------
unzip
#解压缩.zip文件
unzip 压缩文件名
.gz格式
gzip
#压缩为.gz格式的压缩文件,原文件会消失
gzip 原文件
gzip -c 原文件 >压缩文件.gz(可以写需要保存到的目录,最后写压缩文件名)
#压缩为.gz格式,原文件保留
#-c的意思不是说需要保留文件,而是要把压缩的结果输出到控制台.
#>的意思是把结果输出到什么地方去.
gzip -r 目录
#-r 递归,遍历文件夹,压缩目录下的所有子文件,但是不压缩目录
gzip -r 原文件夹
gunzip
#解压缩文件
gunzip 压缩文名
#-r 递归,遍历文件夹,解压缩目录下的所有压缩子文件
gunzip -r 压缩文件目录
.tar.gz格式
其实.tar.gz格式是先打包为tar格式,在压缩为.gz格式
-------------------------------
打包命令:
tar -cvf 打包文件名.tar 原文件
选项:
-c 打包
-v 显示过程
-f 指定打包后的文件名
-------------------------------
解打包命令:
tar -xvf 打包文件名
选项:
-x 解打包
-------------------------------
tar -zcvf 压缩包名.tar.gz 原文件
选项:
-z 压缩为.tar.gz格式
-------------------------------
tar -zxvf 压缩包名.tar.gz
选项:
-x 解压缩.tar.gz格式
-------------------------------
#加上-C(大写)表示解压到指定的目录
tar -zxvf 压缩包名.tar.gz -C 指定目录
解压:
tar -zxvf learn.tar.gz -C 目录
压缩:
tar -zcvf learn.tar.gz learn
06、关机和重启命令
shutdown [选项] 时间
选项:
-c 取消前一个关机命令
-h 关机
-r 重启
#使用shutdown会在关机的时候帮我们保存数据
shutdown -h now 马上关机
---------------------------------------------------------------------------------
其他关机命令
#使用这三个命令不是特别安全,因为它们不会帮我们保存数据
halt
-n : 在关机前不做将记忆体资料写回硬盘的动作
-w : 并不会真的关机,只是把记录写到 /var/log/wtmp 档案里
-d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d) -f : 强迫关机,不呼叫 shutdown 这个指令
-i : 在关机之前先把所有网络相关的装置先停止
-p : 当关机的时候,顺便做关闭电源(poweroff)的动作
poweroff
关机,不保存数据
init 0 :关机
init 6 :重启
init 3 :切换字符界面
inti 5 :切换可视化界面
---------------------------------------------------------------------------------
重启命令
reboot
init 6
---------------------------------------------------------------------------------
退出登录命令
logout
07、其他命令
不常用
查看用户登录信息:W 用户名/who
w 用户名
命令输出:
USER 登录的用户名
TTY 登录终端
FROM 从哪个IP地址登陆
LOGIN@ 登录时间
IDLE 用户闲置时间
JCPU 指的是和该终端连接的所有进程占用时间.这个事件并不包括去后台作业的时间,但却包括当前正 在运行的后台作业所占用时间;
PCPU 是指当前进程所占用的时间
WHAT 当前正在运行的命令
who
命令输出:
用户名
登录终端
登录时间(登陆来源IP地址)
------------------------------------------------------------------------------------------------------------
查询当前登录和过去登录的用户信息:last
last
last命令默认时读取/var/log/wtmp文件数据
命令输出
-用户名
-登录终端
-登录IP
-登录时间
-退出时间(在线时间)
---------------------------------------------------------------------------------
查看最后一次登录时间:lastlog
lastlog
lastlog命令默认时读取/var/log/lastlog文件内容
命令输出
-用户名
-登录终端
-登录IP
-最后一次登录时间
---------------------------------------------------------------------------------
磁盘使用情况:df
df
df 用于显示磁盘的使用情况
df -h 格式化显示输出磁盘使用情况
---------------------------------------------------------------------------------
查看任务进程:top
top
任务进程
第一行:
10:01:23 — 当前系统时间
126 days, 14:29 — 系统已经运行了126天14小时29分钟(在这期间没有重启过)
2 users — 当前有2个用户登录系统
load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况
第二行:
Tasks — 任务(进程),系统现在共有183个进程,其中处于运行中的有1个,182个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个
第三行:cpu状态
6.7% us — 用户空间占用CPU的百分比。
0.4% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
92.9% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.0% si — 软中断(Software Interrupts)占用CPU的百分比
第四行:内存状态
8306544k total — 物理内存总量(8GB)
7775876k used — 使用中的内存总量(7.7GB)
530668k free — 空闲内存总量(530M)
79236k buffers — 缓存的内存量 (79M)
第五行:swap交换分区
2031608k total — 交换区总量(2GB)
2556k used — 使用的交换区总量(2.5M)
2029052k free — 空闲交换区总量(2GB)
4231276k cached — 缓冲的交换区总量(4GB)
第五行以下:
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 — 进程名称(命令名/命令行)
---------------------------------------------------------------------------------
查看内存占用:free
free
内存占用情况:
total 内存总数
used 已经使用的内存数
free 空闲的内存数
buffers Buffer 缓存内存数
cached Page 缓存内存数
---------------------------------------------------------------------------------
在显示器输出内容:echo
echo
常用
查看操作历史:history
history
用于显示执行过的历史命令记录
---------------------------------------------------------------------------------
文件查看命令:cat/tail
cat
整个文件的内容显示出来
tail
默认在屏幕上显示指定文件的末尾10行
参数:
-f 显示文件最新追加的内容
-行数 在屏幕上显示指定文件的末尾参数设置的行数
08、vi编辑器
编辑器的三种模式
三种模式:
编辑模式(命令模式) :所有的机键动作都会理解为编辑整个文档的操作,默认为编辑模式
输入模式:大部分机键动作都会理解为输入的字符
末行模式:在末行模式,输入很多文件管理命令
模式之间的相互转换:
编辑-->输入
i:在光标所在字符前开始插入
a:在光标所在字符后开始插入
o:在光标所在行的下面另起一新行插入
s:删除光标所在的字符并开始插入
-----------------------------------------
I:在光标所在行的行首开始插入 如果行首有空格则在空格之后插入
A:在光标所在你行的行尾开始插入
O:在光标所在行的上面另起一行开始插入
S:删除光标所在行并开始插入
输入模式-->编辑模式
ESC(键盘左上方的按键)
编辑模式--->末行模式
:
末行模式:-->编辑模式
ESC(键盘左上方的按键)(一次或者多次)
---------------------------------------------------------------------------------
打开和关闭文件
打开文件
vi /path/to/file
关闭文件
在末行模式下
wq: 保存退出
q!: 退出不保存
---------------------------------------------------------------------------------
移动光标
逐字符移动:
h:左移动
l:右移动
j:向下移动
k:向上移动
行内跳转:
0 跳转到行首
$ 跳转到行尾
行间跳转(末行模式)
num 跳转到某一行(末行模式)
G 跳转行最后一行(编辑模式)
gg 跳转到第一行(编辑模式)
---------------------------------------------------------------------------------
翻屏操作
在编辑模式下:
ctrl+f 向下翻一页
ctrl+b 向上翻一页
---------------------------------------------------------------------------------
删除命令
dd 删除光标所在行 (编辑模式)
3dd 从光标行开始删除3行(编辑模式)
: 1,4d 删除第一行到第四行(末行模式)
---------------------------------------------------------------------------------
复制和粘贴命令
yy 复制光标所在行 (编辑模式)
2yy 从光标行开始复制2行(编辑模式)
p 粘贴命令
---------------------------------------------------------------------------------
查找和替换
文件的查找(末行,了解即可)
/parttern 从前往后查找
?parttern 从后往前查找
n 下一个匹配的字符串
N 上一个匹配的字符串
文本的替换(末行模式)
startNum,endNums/partter/string/gi
g 全局替换
i 忽略大小写
%s/f/F/gi
:.,$s/F/f/gi
:/关键字 按n找下一个
set number 设置行号
或者
set nu
取消行号
set nu!
09、权限管理
用户管理
创建用户 :useradd [用户名]
创建用户并分配一个组:useradd -G [组名] [用户名]
查看系统用户:cat /etc/passwd
1 用户名
2 用户的密码,用x替代
3 用户的uid,一般情况下root为0,1-499默认为系统账号,有的更大些到1000,500-65535为用户的可登录账号,有的系统从1000开始。
4 用户的gid,linux的用户都会有两个ID,一个是用户uid,一个是用户组id,在我们登录的时候,输入用户名和密码,其实会先到/etc/passwd查看是否有你输入的账号或者用户名,有的话将该账号与对应的UID和GID(在/etc/group中)读出来。然后读出主文件夹与shell的设置,然后再去检验密码是否正确,正确的话正常登录。
5 用户的账号说明解释
6 用户的家目录文件夹
7 用户使用的shell,如果换成/sbin/nologin/就是默认没有登录环境的。
---------------------------------------------------------------------------------
创建用户组 groupadd 组名
查看系统用户组:cat /etc/group
在/etc/group 中的每条记录分四个字段:
第一字段: 用户组名称
第二字段: 用户组密码
第三字段: GID
第四字段: 用户列表,每个用户之间用逗号隔开
---------------------------------------------------------------------------------
修改用户组属性
usermod -G [组名] [用户名]
----------------------------------------------------------------------------------
删除用户:
-f:强制删除用户,即使用户已登录
-r:删除与用户相关的所有文件
---------------------------------------------------------------------------------
设置用户密码: passwd 用户名
查看密码:
cat /etc/shadow
注销 logout
切换用户: su 用户名
文件基本权限
chmod [选项] 模式 文件名
选项
-R 递归
模式
[guoa] [+-=] [rwx]
[mode=421]
---------------------------------------------------------------------------------
#修改权限的方式(数字)
chmod [选项] 模式 文件名
[mode=421]
权限的数字表示
r 4 r-- 100
w 2 -w- 010
x 1 --x 001
111--->7 rwx
110--->6 rw-
100--->4 r--
0 ---
1 --x
2 -w-
3 -wx
4 r--
5 r-x
6 rw-
7 rwx
示例:
rwx r-x r-x
7 5 5
chmod 755 文件
aa.txt --->
拥有者: 可读可写 rw- 6
所述组: 可读写执行 r-x 5
其他人: 可读可写可执行 rwx 7
chmod 657 aa.txt
---------------------------------------------------------------------------------
修改文件的所有者
chown 用户名 文件名
---------------------------------------------------------------------------------
修改文件所属组
chgrp 组名 文件名
sudo权限
root把本来只能超级用户执行的命令赋予普通用户执行.
su 切换账号 (swtich user的意思)
su
sudo的操作对象是系统命令
visudo
#实际修改的是/etc/sudoers文件
#用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
root ALL=(ALL) ALL
#%组名 被管理注解的地址=(可使用身份) 授权命令(绝对路径)
%wheel ALL=(ALL) ALL
需求:想让root用户将shutdown -h 10 定时关机命令赋予 yege用户
在配置文件中 加上
yege ALL = (ALL) /usr/sbin/shutdown
切换到yege用户后
使用sudo命令执行shutdown , 如果直接执行 shutdown -h 10 发现还是没有权限
因此要输入 , 相当于借权限
sudo shutdown -h 10
10、防火墙
centos7的防火墙程序服务名为:firewalld
防火墙配置命令:firewall-cmd
#防火墙帮助:
firewall-cmd --help
#查看防火墙状态:
firewall-cmd --state
#查看所有打开的端口:
firewall-cmd --zone=public --list-ports
开启端口:
firewall-cmd --zone=public --add-port=端口号/tcp --permanent(--permanent参数为永久生效,不加则重启后失效)
#更新防火墙规则:
firewall-cmd --reload
#删除端口:
firewall-cmd --zone=public --remove-port=端口号/tcp --permanent
#开启防火墙
systemctl start firewalld
#关闭防火墙
systemctl stop firewalld
#禁止开机自启
systemctl disable firewalld
#允许开机自启
systemctl enable firewalld