linux系统分区
最少要包含三个区:
- 启动分区 /boot: 200M
- 根分区 /
- 交换分区 swap:和内存一样大,或者是内存的1.5倍
vm网络的三种模式:
1.桥接 : 相当于跟宿主机平等地位,在同一个网段,占用网段的ip地址
2.NAT : 相当于是用宿主机做代理,和宿主机不在同一个网段
3.仅主机模式 : 不能上网?和宿主机共享网络?
linux内核以及版本规则
内核主要是负责:
- 硬件管理
- 内存管理
- I/O管理
- VFS
发行版本都是根据内核做的拓展
一般的版本号规则是:r.x.y
- r: release version
- x:偶数:稳定版,奇数:开发中版本
- y:错误修补次数
- 例如:2.0.38 ; 2.2.16
linux启动顺序
- load bios (hardware information)
- read MBR’s config to find out the OS
- load the kernel of the OS
- init process starts…
- execute /etc/rc.d/sysinit
- start other moudules(etc/moudules.conf)
- execute the run level scripts
- execute /etc/rc.d/rc.local
- execute /bin/login
- shell started…
run level
0 - 系统停机状态
1 - 单用户工作状态
2 - 多用户状态(没有NFS)
3 - 多用户状态(有NFS)
4 - 系统未使用,留给用户
5 - 图形界面
6 - 系统正常关闭并重启
例如:使用命令 init 0 表示关机
通过runlevel命令,可以查看系统当前的运行级别。
面试题: 怎么找回丢失的root用户的密码?
关机重启进入单用户模式,修改root用户密码。(单用户模式,root不需要输入密码)
不能远程ssh连接找回密码
修改默认的运行级别,必须是centos7.0以前的版本 /etc/inittab。7.0以后的版本,有所改变。
常用命令
不知道命令怎么用,可以使用:命令 –help来输出帮助信息。
例如:
shutdown –help
或者
man shutdownls -l
: 以d开头的是目录,以-开头的是文件ls -lh
: -h表示符合人观看的模式输出rm -rf xx
: r表示递归,f表示forcetouch 1
:创建一个文件名称是1cp -r
:递归复制文件夹vi
命令有两种模式,命令模式和编辑模式。
在命令模式下输入a
表示append,i表示insert
在编辑模式下按ESC
表示退出编辑模式,":wq"
:表示存盘退出
在命令模式下:dd
表示删除一行,dw
表示删除一个单词。
在命令模式下,o
表示插入一行,大写O
表示在上面插入一行。find / -name *local
从/查找文件名称为*local的cp -r test/ /home/
\cp -r test/ /home/
覆盖拷贝.cat -n
显示行号cat -n /etc/profile | more
一页一页显示more
基于vi的全屏显示查看文本,一页一页显示。按回车键
是显示下一行,按空格键
显示下一页,ctrl+b
返回上一页,ctrl+f
回到下一页less
指令,适合查看大文件,它不是一次性将文件全部加载,是一页一页加载的>
指令和>>
指令:
>
输出重定向和>>
追加
例如:
ls -l >a.txt
: 将列表写入a.txt覆盖
ls -l >>a.txt
: 将列表写入a.txt追加- echo “内容” > 文件
- echo “内容” >> 文件
cal
: 输出日历- echo $PATH : 输出环境变量path
ln
指令
软链接,类似于windows的快捷方式
ln -s /root linkToRoot
: 创建一个软连接linkToRoot指向/root
删除软件界rm -rf linkToRoot
: 注意不要带斜杠,不要写成linkToRoot/history
:查看命令历史记录
history 10 : 显示10条
!id : 例如!999 :表示执行history中id为999的命令- 时间日期:
date -s “2018-10-10 11:11:11” 设置当前时间
date “+%Y-%m-%d %H:%m:%s” 2018-09-02 14:09:1535871550
cal 2020 : 显示2020年的日历 find
:
find /root -name hello.txt : 在/root目录下,查找名称为hello.txt的文件
find /root -user nobody : 在/root目录下,查找用户为nobody的文件
find / -size +20M : 查找/目录下所有大于20M的文件
find / -size -20M : 查找/目录下所有小于20M的文件
find / -size 20M : 查找/目录下所有等于20M的文件locate
: 快速定位文件,使用前先updatedbgrep
: 过滤筛选|
:管道,将前面的结果交给后面的指令去处理
cat hello.txt | grep yes : 查找hello.txt中含有yes的内容
cat hello.txt | grep -n yes : 查找hello.txt中含有yes的内容,并显示所在行的行号
cat hello.txt | grep -ni yes : 查找hello.txt中含有yes的内容,,并显示所在行的行号,不区分大小写gzip
gunzip
zip
zip -r /home mypackage.zipunzip
unzip -d /home/package mypackage.ziptar
:
tar -zcvf hello.tar.gz hello.txt ks.cfg : 将hello.txt ks.cfg 两个文件打包到hello.tar.gz
tar -zcvf home.tar.gz /home/ : 将home目录打包成home.tar.gz
tar -zxvf chengli.tar.gz : 解压到当前目录
tar -zxvf chengli.tar.gz -C aa/ : 解压到aa目录vim
编辑器快捷键:yy
拷贝当前行,5yy
拷贝当前行向下的5行- 粘贴复制的内容:
p
dd
删除当前行,5dd
删除当前行及后面的5行/
表示查找,n
表示光标定位下一个查找匹配的位置- 快速到达末尾一行:
G
,回到首行:gg
- 撤销:
u
7.跳转到指定行,先输入行号,例如20,再按快捷键shift+g
关机重启:
shudown -h now
:立即关机
shudown -h 1
: 表示一分钟后关机
shutdown -r now
: 立即重启
halt
: 直接使用,等价于关机
reboot
: 重启
sync
: 把内存的数据同步到磁盘,关机之前我们都应当使用sync,防止数据丢失- 用户的登录和注销
logout
: 注销当前用户,只能在3级别下使用,在图形界面是无效的。 用户管理
linux是一个多用户多任务的操作系统
linux中每个用户都至少要属于一个用户组,根据用户组来进行权限的分配添加用户
useradd [选项] 用户名
例如:
useradd xiaoming
: 该指令会创建一个用户叫xiaoming,也会默认创建一个用户组叫xiaoming,同时会在home目录下创建一个该用户的家目录
useradd -d /home/dog xiaohong
: 创建用户的同时,指定家目录。此处 /home/dog不能事先存在
passwd 用户名
: 给用户指定密码- 删除用户:
userdel xiaoming
:删除xiaoming,保留家目录
userdel -r xiaohong
: 删除xiaohong,同时删除家目录 - 查询用户信息:
id 用户名
例如: id root 查询root用户的信息 切换用户:
su - 用户名
例如:su - xiaoming
切换到小明,高权限切换到低权限用户,不需要输入密码,反之是需要的。假如从root->xiaoming,再切换回root是不需要密码的。whoami
: 查看当前用户是谁- 添加用户组
groupadd wudang
: 添加一个用户组wudang
gourpdel wudang
: 删除wudang组 - 创建用户时,指定组:
useradd -g wudang zhangwuji
添加用户的同时,jiang其放到wudang组。wudang这个组要事先创建好
- 添加用户组
改变用户组:
usermod -g shaolin zhangwuji
:把张无忌移到shaolin组
usermod -d 目录名 用户名
: 改变用户登录时初始目录用户和组相关的文件:
/etc/passwd
: 用户配置文件
/etc/group
: 组配置文件
/etc/shadow
: 口令配置文件(密码)
组管理和权限管理:
1.文件:
所有者
所在组 : 一般来说,文件所在组就是所有者的组,但是也可以改变
其他组
2.查看文件的所有者: ls -ahl
3.改变文件所有者: chown 用户名 文件名
这里修改文件所有者,文件所在组不会变化
改变用户所有者同时改变所在组: chown 用户名:组名 文件名
-R 如果是目录,则表示其下所有目录和文件递归生效
4.改变文件所在组: chgrp 组名 文件名
-R表示递归子目录和文件都生效
5.文件展示列表的含义:
-rw-r--r--. 1 zhangwuji shaolin 0 9月 4 09:57 ok.txt
从左到右依次:
- : 文件类型(-:文件;d:表示目录;l:表示软连接;b:块文件,硬盘;c:字符设备,鼠标键盘)
rw- : 表示文件所有者的权限
r-- : 文件所在组用户的权限
r-- : 文件其他组用户的权限
1 : 如果是文件,表示为硬链接文件,如果是目录,表示该目录子目录的个数(不包括文件个数)
0 : 表示文件的大小,如果是目录则为4096
后面的日期表示最后修改时间
6. rwx作用到文件:
r : 代编可读(read)
w : 代表可写(write),可写并不代表可以删除该文件,能删除一个文件的前提是对该文件所在的目录有写权限。
x : 代表可执行(execute)
7. rwx作用到目录
r : 可读,ls查看目录内容
w : 代表可以修改,目录内创建+删除+重命名目录
x : 代表可以进入该目录
8. rwx可以用数字来表示:
r=4, w=2,x=1 因此rwx=4+2+1=7
- 修改权限 - chmod
第一种方式: +、-、=变更权限
u:所有者, g:所在组 ,o:其他人,a:所有人(u,o,g的总和)
1)chmod u=rwx,g=rx,o=x 文件目录名
2)chmod o+w 文件目录名 : 给o增加w权限
3)chmod a-x 文件目录名 :给a去除x权限
第二种方式:通过数字来变更权限
chmod u=rwx,g=rx,o=x 文件名
等价于:chmod 751 文件名
crond任务调度
常用指令:
`crontab -e` 编辑
`crontab -l` 查询
`crontab -r` 删除所有调度任务
service crond restart
对于简单的任务,可以直接在crontab中设置,复杂的任务需要写shel脚本。
例1:
crontab -e
然后输入: */1 * * * * ls -l /etc/ >> /home/chengli/ok.txt
每分钟会执行 ls -l /etc/ >> /home/chengli/ok.txt
例2:
vim /home/chengli/mytask.sh
输入:date >> /home/chengli/date.txt
chomd u+x /home/chengli/mytask.sh
crontab -e
输入: */1 * * * * /home/chengli/mytask.sh
磁盘与分区
查看系统分区情况:
lsblk -f
或者直接:lsblk
linux文件系统和磁盘可以理解为是互相独立的,相互之间的关联通过挂载来完成。
如何增加一块硬盘?
1. 虚拟机添加硬盘
2. 分区 :fdisk /dev/sdb
3. 格式化 :mkfs -t ext4 /dev/sdb1
4. 挂载 : 先创建/home/newdisk, 然后:mount /dev/sdb1 /home/newdisk
5. 设置可以自动挂载:
编辑文件:/etc/fstab
输入:/dev/sdb1 /home/newdisk ext4 defaults 0 0
执行命令:mount -a
6. 取消挂载 :umount /dev/sdb1
注意取消挂载的时候,不能在挂载目录中,否则会提示当前是设备忙磁盘使用情况查询
基本语法:df -lh
l
: 表示只显示本机的磁盘
h
: 表示human,人类易读的方式展示
展示实例如下:
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 27G 3.6G 24G 14% /
devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs 1.4G 0 1.4G 0% /dev/shm
tmpfs 1.4G 9.5M 1.4G 1% /run
tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup
/dev/sdb1 2.0G 6.0M 1.9G 1% /home/newdisk
/dev/sda1 1014M 142M 873M 14% /boot
tmpfs 276M 0 276M 0% /run/user/0
du -h /目录
: 查询指定目录的磁盘占用情况
-s
指定目录占用大小汇总
-h
带计量单位
-a
含文件
--max-depth
子目录深度
-c
列出明细的同事,增加汇总值
- 实用指令:
ls -l /home | grep "^-" | wc -l 统计/home目录下所有文件的个数,不包括文件夹等
ls -lR /home | grep "^-" | wc -l 递归统计,包括子文件夹
tree /home 树壮展示目录结构
网络配置
1: 通过界面设置(不适合做服务器用,而且一般服务器也不装桌面)
2:静态配置,指定固定的ip:
修改:/etc/sysconfig/network-scripts/ifcfg-* : *代表网卡的名称,可以通过ifconfig查询
添加修改:
ONBOOT=”yes”
BOOTPROTO=”dhcp” -> BOOTPROTO=”static”
IPADDR=根据具体情况填写
GATEWAY=根据具体情况填写
DNS=根据具体情况填写
重启网络服务: service network restart- 进程管理(重点)
ps命令查看当前系统正在运行的进程,一般用的参数是aux
ps -a : 显示当前终端的所有进程信息
ps -u : 以用户的格式显示进程信息
ps -x : 显示后台进程运行的参数
进程太多可以通过 ps -aux | more 一页一页的查看
ps -aux|grep tomcat 查看tomcat进程ps -ef :以全格式显示所有进程,查看进程的父进程
-e 显示所有进程
-f 全格式显示kill [参数] 进程id
-9:表示
killall 进程名称 : 支持通配符
例:1. 踢出非法登录用户
ps -aux|grep sshd 查找进程id
kill 进程id2. 杀掉sshd服务可以禁止所有ssh登录 3. 杀掉一个终端 ps -aux|grep bash :/bin/bash的全部是终端 必须通过kill -9 才能杀掉
pstree 以树状形式显示进程
安装: yum install psmisc
-p : 显示进程id服务管理
service管理指令: service 服务名 [start|stop|restart|reload|status] 在CentOS 7.0后不再使用service,而是systemctl 例: 1. service iptables status : 查看防火墙状态,仅仅是临时生效,重启后失效,可以通过chkconfig来设定 2. 查看系统有哪些服务 : /etc/init.d目录下全是 centos7.0之前 chkconfig指令: 可以给每个服务的各个运行级别设置自启动/关闭(centos7.0 之前的版本) 基本语法 1)查看服务 chkconfig --list|grep xxx 2)chkconfig 服务名 --list 3)chkconfig --level 5 服务名 on/off CentOS 7.0以后使用:systemctl list-unit-files
进程监控(动态/静态):
top -d -i -p 交互操作: P : 以PCU使用率排序,默认此项 M : 以内存使用率排序 N : 以PID排序 u : 查看指定用户的进程 k : 终止指定的进程
- 进程管理(重点)
[root@centos7 system]# top
top - 10:39:03 up 3:05, 1 user, load average: 0.01, 0.02, 0.05
Tasks: 118 total, 2 running, 116 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.7 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2823772 total, 2296416 free, 133192 used, 394164 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 2478032 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 128136 6620 4084 S 0.7 0.2 0:07.37 systemd
网络服务监控
netstat -nap
RPM和yum
- rpm简单查询指令:rpm -qa|grep xx
举例:
[root@centos7 ~]# rpm -qa|grep openssh
openssh-clients-7.4p1-16.el7.x86_64
openssh-server-7.4p1-16.el7.x86_64
openssh-7.4p1-16.el7.x86_64
其中:el7表示适用于7.0系统的版本,x86_64表示64为操作系统,如果是noarch表示是通用版本
- 查询软件版本:
rpm -qi
软件包名
举例:
[root@centos7 ~]# rpm -qi iproute
Name : iproute
Version : 4.11.0
Release : 14.el7
Architecture: x86_64
Install Date: 2018年08月03日 星期五 10时38分42秒
Group : Applications/System
Size : 1788731
License : GPLv2+ and Public Domain
Signature : RSA/SHA256, 2018年04月25日 星期三 19时05分53秒, Key ID 24c6a8a7f4a80eb5
Source RPM : iproute-4.11.0-14.el7.src.rpm
Build Date : 2018年04月11日 星期三 16时08分35秒
Build Host : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://kernel.org/pub/linux/utils/net/iproute2/
Summary : Advanced IP routing and network device configuration tools
Description :
The iproute package contains networking utilities (ip and rtmon, for example)
which are designed to use the advanced networking capabilities of the Linux
kernel.
- 查询软件包的安装信息:
rpm -ql
软件包名
举例:
[root@centos7 ~]# rpm -ql iproute
/etc/iproute2
/etc/iproute2/bpf_pinning
/etc/iproute2/ematch_map
/etc/iproute2/group
/etc/iproute2/nl_protos
/etc/iproute2/rt_dsfield
/etc/iproute2/rt_protos
/etc/iproute2/rt_realms
/etc/iproute2/rt_scopes
/etc/iproute2/rt_tables
/etc/sysconfig/cbq
...
...
...
- 查询文件属于哪个软件安装的
rpm -qf
文件名
举例:
[root@centos7 ~]# rpm -qf /etc/iproute2
iproute-4.11.0-14.el7.x86_64
卸载rpm包
rpm -e rpm
包名称
rpm -e --nodeps
包名: 强制删除,不管依赖关系安装rpm包
rpm -ivh rpm
包全路径名
i=install:表示安装
v=verbose:提示
h=hash:进度条
安装的前提是有这个rpm安装包,或者挂载光驱加载centos系统盘,挂载之后到/media/下面去找YUM方式
- 需要联网
- 常用命令:
1)查询服务器是否有需要安装的软件包:yum list |grep xx
2)安装yum install xx
: 默认是安装最新版本的软件