VIM命令:
vim:修改文档
yy:复制当前行,按p粘贴,5yy表示复制当前行以下5行
dd:删除当前行,5dd表示删除一下5行
在文档中查找关键字,按/查找 输入n查找下一个
设置文件行数: set nu set nonu
找首末行:G最末行 gg首行
撤销这个动作: u
快速移动到第20行 输入20 然后按 shift +g Enter是有多少数字移动多少行
关机,重启
shutdown
shutdown -h now :立即关机
shutdown -h 1:一分钟后关机
shutdown -r now:立即重启
halt:效果等价于关机
reboot:重启服务器
sync: 把内存的数据同步到磁盘,保存数据
注意:不管是关机还是重启,首先要用sync命令,把内存中的数据写到磁盘
登录 注销
尽量少用root登录,
su root 切换到管理员
logout:远程注销有效,在运行级别3有效
用户管理
linux是一个多用户多任务的操作系统,任何一个使用资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
Linux的用户需要至少要属于一个组
cd:change diretory
添加用户:
useradd 【选项】 用户名
useradd xm 如果没有选项,就会默认创建一个跟用户名相同的组
useradd -d 指定目录 加入到指定目录组下
passwd 用户名 更改用户密码
删除用户:
userdel 用户名,保持家目录
userdel -r 用户名 把用户组也删除
一般不会删除家目录 因为家目录下有许多资料
查询用户信息:
id root
切换用户
su 用户
exit 返回到原先账户
whoami 显示账户
用户组:
类似于角色,系统可以对有共性的多个用户进行统一的管理
新增组:groupadd
删除组:groupdel
增加用户时直接加上组: useradd -g 用户组 用户名
修改用户的组: usermod -g 用户组 用户名
用户组的文件
用户配置文件 /etc/passwd
组配置文件 /etc/group
口令配置文件 /etc/shadow
vim /etc/passwd
用户名:x:用户id:组id:目录id:shell
实用指令:
指令运行级别:7个运行级别
0:关机
1:单用户(找回丢失密码)
2:多用户无网络服务
3:多用户有网络服务
4:保留
5:图形界面
6:重启
常用运行级别是3和5,要修改默认的运行级别可改文件
/etc/inittab的id:5:initdefault:这一行的数字是运行级别
切换到指定运行级别的指令
init[012356]
如:从5>3
init 3
如何找到root密码?
进入单用户模式,然后修改root密码。因为进入单用户模式,root不需要密码就可以登录
开机时候按enter 按e 光标移动到第二行 按 空格 1 在输入b
然后passwd 修改密码就行 必须在机房的虚拟机里改 不能在远程改
如果改成0 就会一直关机怎么办?
也是进入单用户模式
帮助指令:
man +指令 ll -a隐藏文件会出来
help +指令
文件目录类
pwd(功能描述 显示当前工作目录的绝对路径)
ls[目录或是文件] list
-l 以列表的方式显示信息
-a 显示当前目录所有的文件和目录,包括隐藏的
cd ~回到自己目录
cd..回到上一层
mkdir:make directory
-p 创建多级目录
rmdir:指令删除空目录
不是非空:rm -rf
touch 创建一个空文件
touch ok1.txt ok2.txt 可以创建多个指令
cp[选项] source dest:
-r:递归复制整个文件夹 cp整个文件下的东西需要带-r
覆盖:\cp强制覆盖
rm 移除文件或目录
-rf 递归删除整个文件夹
-f 强制删除不提示
mv 移动文件与目录重命名
mv old new
locale:查看编码
设置编码为 zh_cn utf-8编码 不乱码
localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
export LC_ALL=zh_CN.utf8
cat 一次性查看文件所有内容 只能浏览不能修改文件,为了浏览方便 一般会加上 管道命令
-n:显示行号
| more 以全屏幕的方式按页显示文本文件的内容 分页显示 按空格键
-NUM 每次看多少行
less 不是全部加载文件,根据需要显示加载文件内容,也是分页
more: 顾名思义显示更多
less: 由于more不能后退,就取more的反义词less加上后退功能
所以Linux里流传着这样一句话:"less is more".
总结下more 和 less的区别:
1. less可以按键盘上下方向键显示上下内容,more不能通过上下方向键控制显示
2. less不必读整个文件,加载速度会比more更快
3. less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容
> 和>>
>输出重定向和>>追加
(1)ls -l>文件 (列表的内容写入文件a.txt(覆盖写),如果不存在则新建一个)
将ls -l 的显示的内容覆盖写入到a.txt文件中。
(2)ls -al>>文件 (功能描述:列表的内容追加到文件aa.txt的末尾)
(3)cat 文件1 > 文件2(将文件1的内容覆盖到文件2)
(4)echo "内容" >> c.txt 追加
(5)cal >> 路径 当前日历信息 追加到文件下面
echo [选项] [输出内荣]
echo $PATH
echo "hello"
一般是打出环境、
head 显示文件的开头部分 默认显示前10行
head -n 10 显示文件前10行
tail 输出文件中尾部的内容,默认显示文件的后10行内容
tail 文件 查看文件后10行内容
tail -n 5 文件 查看文件后5行内容,5可以是任意行数
tail -f 文件 实时追踪该文档的所有更新
ln软链接 符号链接
ln -s [原文件目录] [软链接名] (功能描述:给源文件创建一个软链接)
删除软连接不要带斜杠,否则提示资源忙
pwd查看时仍然看到软连接所在目录
history
显示所有的历史命令 history
显示最近使用过的10个指令 history 10
执行历史编号为5的指令
!对应的编号 执行编号对应的命令 !178
date
date "+%Y" 年
date "+%m" 月
date "+%d" 日
date "+Y %m %d %H %M%S" 时分秒
设置日期
date -s "2019-04-23 22:22:22"
恢复时间:ntpdate time.windows.com
cal calenter
查看日历指令 cal
显示一年时间 cal 2020
搜索查找类
find
从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
find[搜索范围] [选项] [文件名]
-name<查询方式> 按照指定的文件名查找模式查找文件
find /home -name hello.txt
find / -name *.txt
-user<用户名> 查找属于指定用户名所有文件
find /opt -user root
-size<文件大小> 按照指定的文件大小查找文件
find / -size +20M +大于 -小于
find / -size +20480k +大于 -小于
locate
可以快速定位文件路径。locate指令利用实现建立的系统中所有文件名称及路径的locate数据实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确性,管理员必须定期更新locate时刻。
updatedb 创建locate数据库
locate hello.txt
grep指令
过滤查找 grep[选项] 查找内容 源文件
-n 显示匹配行及行数
-i 忽略字母大小写
cat hello.tx | grep yes
管道指令|
表示将前一个命令的处理结果输出传递给后面的命令处理。
压缩文件
gzip用于压缩文件,gunzip用于解压的
gzip 只能将文件压缩至.gz的 被压缩的文件不会被保留
gunzip 用于解压.gz的
zip用于压缩文件
-r:递归压缩,即压缩目录
zip -r 名字 路径
zip -r xxx.zip ./*
unzip用于解压文件,这个在项目打包发布中很有用
-d:指定解压后文件的存放目录
unzip -d 指定目录 名字
unzip -d /temp test.zip
tar
tar -zcvf 名字 文件1 文件2 。。。
tar -zcvf 名字 目录
tar -zcvf lls.tar.gz ll.txt ls.txt
解压
tar -zxvf 文件名
tar -zxvf 文件名 -C /opt/ 指定目录必须存在
tar -zxvf lls.tar.gz -C /opt/
组管理和权限管理
用户配置文件(用户信息)/etc/passwd
口令配置信息(密码和登录信息,是加密)/etc/shadow
组配置文件(组信息)/etc/group
每个用户必须属于一个组,不能独立于组外
在linux中每个文件有所有者,所在组,其他组的概念
(1)所有组
文件的创建者就是文件的所有者
如:创建一个police组,创建一个tom用户,将tom加到police下,然后创建一个文件ok.txt,看看情况如何?
groupadd police
useradd -g police tom
passwd tom
ls -ahl
修改文件所有者
chown 用户名 文件名 改变文件的所有者
chown newowner:newgroup file 改变用户的所有者和所有组
-R 如果是目录 则使其下所有子文件或目录递归生效
改变kkk目录下所有文件(包括子目录和子目录下所有文件)的所有者为tom: chown -R tom kkk/
(2)所在组
默认是创建者所在的组
修改文件所在组:
chgrp 组名 文件名
chgrp -R 组名 /home/kkk
(3)其它组
改变用户所在组
usermod -g 组名 用户名
usermod -d 目录名 用户名 改变该用户登录的初始目录
创建一个土匪组(bandit)将tom这个用户从原来所在的police组,修改到bandit组
权限基本介绍
rwx作用到文件
r 代表可读。可以读取,查看
w代表可写。可以修改,但是不一定可以删除。必须对该文件所在目录有写权限才可以删除
x代表可执行。
rwx作用到目录
r代表可读。可以读取,查看目录内容
w代表可写。可以修改,目录内创建+删除+重命名目录
x代表可执行。可以进入该目录
-rw-r--r--
-普通文件 d:目录 l:软连接 c:字符设备【字符:鼠标】b:块文件,硬盘
rw-:表示文件所有者权限 r:读 w:写
r--:文件所在组的用户只有组权限
r--:文件其他组的用户只有读权限
1:如果是文件 是硬链接的数 ,如果是目录表示子目录个数
tom:文件的所有者
police:文件所在组
6:文件的大小,如果是目录,都是4096
3月 18 19:24:文件最后修改时间
第0位:文件类型(d,-,l,c,b)
第1-3位 所有者拥有的权限 -user
第4-6位 确定所属组(同用户组拥有该文件的权限) -Group
第7-9位 确定其他用户拥有该文件的权限 -Other
可用数字表示为: r=4 w=2 x=1
修改权限-chmod
可以修改文件或者目录的权限
u:所有者 g:所在组 o:其他人 a:所有人(u,g,o的总和)
1 chmod u=rwx,g=rx,o=x 文件目录名
2 chmod o+w 文件目录名
3 chmod a-x 文件目录名
案例演示
(1)给abc文件所有者加执行权限,给所在组读和执行权限,给其他人读和写权限
chmod u=x,g=wx,o=rw abc
(2) 给abc文件的所有者除去执行的权限,增加组写的权限
chmod u-x,g+w abc
(3) 给abc所有用户增加读的权限
chmod a+r
第二种方式 通过数字改变权限
chmod u=rwx,g=rx,o=x 文件目录名
相当于 chmod 751 文件目录名
案例演示:
(1) 将/hello/abc.txt 文件的权限修改成 rwx-xr-x,使用数字的方式实现
chmod 751 abc.txt
最佳实践 警察和土匪游戏
groupadd police
groupadd bandit
useradd -g police jack
useradd -g police jerry
useradd -g bandit xh
useradd -g bandit xm
touch abc.txt
chmod 640 abc.txt
chmod 664 abc.txt
usermod -g police xh
groupadd shenxian
groupadd yaoguai
useradd -g yaoguai wukong
useradd -g yaoguai bajie
useradd -g shenxian bajie
useradd -g shenxian shaseng
touch monkey.java
vim monkey.java
chmod g+rw monkey.java
vim monkey.java
chgrp yaoguai shaseng
任务调度
crontab进行定时任务的设置
是指系统在某个时间执行的特定的命令或程序。
任务调度分类:1.系统工作:有些重要的工作必须周而复始的执行。如病毒扫描等2.个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
设置任务调度文件: /etc/crontab
设置个人任务调度。执行 crentab -e 命令。
接着输入任务到调度文件
如: */1 * * * * ls -l /etc/>>/tmp/to.txt
每小时的每分钟执行ls -l /etc/>/tmp/to.txt
任务调度的几个应用实例
1.每隔一分钟,就将当前的日期时间加到/tmp/mydate文件中
vim mytask.sh
date>>/tmp/mydate
给mytask.sh一个可执行权限
crontab -e
*/1 * * * * /home/mytask.sh
重启任务调度 service crond restart
磁盘分区 挂载
分区基础知识
mbr分区:
1.最多支持四个主分区
2.系统只能安装在主分区
3.扩展分区要占一个主分区
4.MBR最大只支持2TB,但拥有最好的兼容性
gtp分区:
1.支持无限多个主分区(但操作系统可能限制,比如windows下最多128哥分区)
2.最大支持18EB的大容量(EB=1024PB,PB=1024TB)
3.WINDOWS7 64位以后支持gtp
原理介绍
(1)linux来说无论有几个分区,分给哪一个目录使用,它归根结底就只有一个目录,一个独立且唯一的文件结构,Linux每个分区都是用来组成整个文件系统的一部分。
(2)linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
对于IDE硬盘,驱动器标识符为“hdx~” hd表名分区所在设备的类型,这里是指IDE硬盘。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,他们是主分区或扩展分区,从5开始就是逻辑分区。例如,hda3表示第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
对于SCSI硬盘则标识为“sdx~”
lsblk -f 查看系统的分区和挂载的情况
挂载的经典案例
需求是给linux系统增加一个新的硬盘。
如何增加一块硬盘
(1)虚拟机添加硬盘
(2)分区 fdisk /dev/sdb
(3)格式化 mkfs -t ext4 /dev/sdb1
(4)挂载 先创建/home/newdisk 挂载mount /dev/sdb1 /home/newdisk 卸载 umount
(5)设置可以自动挂载,当你重启系统,通过修改/etc/fstab 实现挂载
添加完成后 执行mount -a 即可生效
磁盘情况查询
查询系统整体磁盘使用情况
基本语法
df -h: 查询系统整体磁盘使用情况
du -h /目录:查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
-c 列出明细的同时,增加汇总值
查询/opt目录的磁盘占用情况,深度为1
du -ach --max-depth=1 /home
(1)统计目录下文件的个数
ls -l /home | grep "^-" | wc -l
先列出来,再过滤,再统计
(2)统计home目录下目录的个数
ls -l /home | grep "^d" | wc -l
(3)统计/home文件夹下文件的个数,包括子文件夹里的
ls -lr /home | grep "^-" | wc -l
(4)以树状显示文件图
tree
NAT模式(网络配置)
查看网路IP和网关
查看虚拟网络编辑器
修改ip地址(修改虚拟网络的ip)
查看网关
查看windows环境中的VMnet8网络配置(ipconfig指令)
使用ipconfig
指定固定ip地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
要求:将ip地址配配置成静态的,ip地址为192.168.184.130
重启 service network restart
进程管理
在linux中,每个执行的程序(代码)都称为一个进程。每个进程都分配一个ID号。
ps:用来查看目前系统中,有哪些正在执行,以及它们执行的状况,可以不加任何参数。
-a:显示当前终端的所有进程信息
-u:以用户的格式显示进程信息
-x:显示后天进程运行的参数
ps -aux | grep xxx
ps -ef | more
以全格式显示当前所有的进程,查看父进程
-e显示所有进程,-f全格式
终止进程kill 和 killall
-9 表示强迫进程立即停止
案例1:踢掉非法用户
ps -aux | grep sshd
找到对应的用户的进程号
kill 进程号
案例2:终止远程登录服务sshd,在适当时候再次重启sshd服务
kill掉远程登录服务
用户在xsell上就登录不上去
service sshd restart
案例3:终止多个gedit编辑器【killall,通过进程名称来终止进程】
gedit 编辑文档
killall gedit
案例4:强制关闭一个终端
ps -aux | grep bash
pstree 以树状形式查看
-p 显示树状形式的pid
请你树状的形式的用户id
服务管理
服务本质上就是进程,但是是运行在后台的,通常会监听某个端口,等待其他程序的请求,比如(mysql,sshd 防火墙等),因此我们又称为守护进程,是linux中非常重要的知识点。
service 服务名 【start | stop | restart | reload | status 】
在centos7.0后,使用systemctl
这是临时关闭的
runlevel 查看当前级别
who -r 查看当前级别
如果希望设置某个服务自启动或关闭永久生效,要使用chkconfig指令,可以给每个服务的各个运行级别设置自启动/关闭
chkconfig --list
chkconfig --list | grep xxx
chkconfig iptables --list
chkconfig --level 5 服务名 on/off
查看防火墙 service iptables status/stop/start
dos
telnet指令检查linux的某个端口是否在监听,并且可以访问
telnet ip 端口
telnet 192.168.184.130 22
这些都是临时生效,要希望永久生效,要使用chkconfig指令,马上讲
查看多少服务
方式1:setup 查看服务 tab切换到确定和取消
方式2:/etc/init.d/服务名称 ls -l /etc/init.d/
ls -l /etc/init.d 查看那些服务可以用
查看系统运行级别 vim /etc/inittab
应用实例:
(1)案例1:请显示当前系统所有服务的各个运行及级别的运行状态
chkconfig --list
(2)案例2: 请查看sshd服务的运行状态
service sshd status
(3)将sshd服务在运行级别5下设置为不自动启动,看看有什么效果
chkconfig --level 5 sshd off
(4)在运行级别为5时,关闭防火墙
chkconfig --level 5 iptables off
(4)在所有运行级别下,关闭防火墙
chkconfig iptables off
(5)在所有运行级别下,开启防火墙
chkconfig iptables on
动态监控进程
top与ps命令很相似,他们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。
top[选项]
选项说明:
-d :指定top命令每个几秒更新,默认是3秒在top命令的交互模式当中可以执行的命令
-i:使top不显示任何闲置或者僵尸进程
-p:通过指定监控进程ID来仅仅监控某个进程的状态
交互操作说明:
P 以CPU使用率排序,默认就是此项
M 以内存的使用率排序
N 以PID排序
q 推出top
监控某个用户
top: 按u 再输入用户名
k杀死某个进程
指定更新时间 默认 top -d 10 更改成10s
netstat
查看系统网络情况
-an 按一定顺序排列输出
-p 显示那个进程在调用
netstat -anp | grep sshd 专门看某个服务的运行状态
RPM包的管理
查询已安装的rpm列表 rpm -qa | grep xx
请查询当前Linux有没有安装firefox
rpm -qa | grep firefox
rpm -qa | more
rpm -q 软件包名 查询软件包是否安装
rpm -qi file 查询安装的rpm软件包信息 版本 位数 等
rpm -ql 软件包名:查询rpm软件包安装到哪里
rpm -ql firefox
rpm -qf 文件全路径名 查询文件所属的软件包
rpm -qf /etc/passwd
rpm -qf /root/install.log
rpm -e rpm包的名称 删除rpm软件
加上 nodeps就是强制删除
安装rpm包
i=install 安装
v=verbose 提示
h=hash 进度条
yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包
yum list | grep xx 软件列表
yum install xxx 下载安装