目录
应当明确的Linux目录功能
vim/vim常用快捷键
开机、重启、用户登录和注销
应当明确的Linux目录功能
/bin(/usr/bin、/usr/local/bin)
:重点。存放最常用的命令/sbin(usr/sbin、/usr/local/sbin)
:存放系统管理员使用的系统管理程序/home
:重点。存放普通用户的主目录。/root
:重点。系统管理员,也称超级权限者的用户主目录。/lib
:系统开机需要最基本的动态链接库,几乎所有应用都需要用到这些共享库/lost+found
:一般是空的,但当系统非法关机时,这里就存放一些文件/etc
:重点。所有的系统管理所需要的配置文件和子目录/usr
:重点。非常重要的目录,用户很多应用程序和文件放在这个目录下,类似windows下的program files目录。/boot
:重点。存放启动linux时使用的一些核心文件,包括一些链接文件和镜像文件
/proc
:虚拟的一个目录,是系统内存的映射,访问这个目录来获取系统信息/srv
:service缩写,存放一些服务启动之后需要提取的数据/sys
:linux2.6内核中新出现的一个文件系统sysfs
以上三个目录都和内核相关,轻易不要乱动!
/tmp
:存放一些临时文件/dev
:类似windows的设备管理器,把所有的硬件用文件的形式存储/media
:重点。linux会自动识别一些设备,如U盘、光驱等。当识别后,会把识别的设备挂载到这个目录下/mnt
:重点。系统提供该目录是为了让用户临时挂载别的文件系统的,可将外部的存储挂载在/mnt上,进入该目录就可以查看其中的内容了/opt
:给主机额外安装软件所存放的目录。如第三方的软件多放在这里。/usr/local
:重点。这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码方式安装的程序/var
:重点。存放不断扩充的东西,比如各种日志文件selinux
:SELinux(security-enhanced linux)是一种安全子系统,能控制程序只能访问特定文件。当受到黑客入侵,管理员可以从中看到出现什么情况,类似360
vim/vim常用快捷键
正常模式下:
1.拷贝当前行:yy
; 拷贝当前行向下2行:2yy
; 粘贴:p
2.删除当前行:dd
; 删除当前行向下2行:2dd
3.光标定位到最首行:gg
; 光标定位到最末行:G
;
4.撤销保存前输入内容:u
5.定位到指定行:数字, shift + g
:如定位到第2行,则输入2 , shift + g
命令行模式下(:):
1.查找某些内容: /内容
回车查找,按n
光标查找到下一个
2.设置文件行号:set nu
3.取消文件行号:set nonu
开机、重启、用户登录和注销
shutdown -h now
:立即关机shutdown -h 1
: 1分钟后关机shutdown -r now
:现在重启halt
: 直接关机reboot
: 现在直接重启sync
: 把内存的数据同步到磁盘
注:建议不管重启还是关机,首先运行sync命令,及时把内存数据写到磁盘上su -用户名
: 更换用户logout/exit
: 注销当前用户(图形运行级别无效)
用户管理
1.添加用户:useradd [选项] 用户名
当用户创建成功后,会自动创建一个同名的home目录,在/home下
也可以通过useradd -d 指定目录 新的用户名
,给新创建的用户指定家目录,注意指定目录之前要不存在
2.用户指定/修改密码:passwd 用户名
3.删除用户:userdel 用户名
:只删除用户,保留家目录
userdel -r 用户名
:同时删除用户和家目录
注意:开发中,删除用户时,一般不会将家目录删除
4.查询用户信息:id 用户名
,返回用户id,组id,组名称
若没有用户,控制台返回“无此用户”
5.切换用户:su - 切换用户名
注:返回原来用户:exit
指令
6.查看当前用户/登录用户:whoami
用户组:测试组 or 研发组
1.增加组:groupadd 组名
2.删除组:groupdel 组名
3.增加用户时直接加上组:useradd -g 用户组 用户名
4.修改用户的组:usermod -g 用户组 用户名
用户和组重要的配置文件:/etc/passwd文件
: 用户配置文件,记录用户信息
每行含义: 用户名:口令(加密):用户id:组id:注释性描述:主目录:登录Shell/etc/shadow文件
:口令/密码配置文件/etc/group文件
:组配置文件,记录linux包含的组信息
每行含义:组名:口令:组标识:组内用户列表
实用指令
运行级别:
0:关机; 1:单用户【找回丢失密码】;2:多用户无网络;3:多用户有网络【常用】;4:保留;5:图形界面;6:重启
常用运行级别为3和5;
修改默认的运行级别可修改配置文件:/etc/inittab的id:5:initdefault:这行数字
命令:init[012356]
面试题:找回root密码
思路:进入单用户模式,然后修改root密码。因为单用户模式,root不需要密码就可以登录。
操作:在引导时修改进入内核选项,进入1.单用户模式
帮助指令:man [命令或配置文件]
或者 help [命令]
文件目录类:
显示当前目录的绝对路径:pwd
显示当前目录或文件的信息:ls [选项] [目录或文件]
选项:
-a:显示全部文件目录或文件,包括隐藏的
-l: 列表方式显示信息
切换目录:cd [目录]
cd ~ 或 cd
:回到用户home目录
cd ..
:回到上级目录
创建目录:mkdir [选项] 要创建的目录
选项:
-p:创建多级目录
删除空目录:rmdir [选项] 要删除的目录
删除非空目录:rm -rf 要删除的非空目录
创建空文件:touch 文件名称
拷贝文件到指定目录:cp [选项] source文件 dest目录
选项:
-r:递归拷贝整个文件
注意:强制覆盖原先文件: \cp
移除文件或目录:rm [选项] 要删除的文件或目录
选项:
-r:递归删除
-f:强制删除不提示
移动文件与目录或重命名:mv oldNameFile newNameFile (有文件名)重命名
mv /temp/moveFile /targetFolder (没文件名)移动文件
查看文件内容(只读):cat [选项] 要查看的文件
选项:
-n:显示行号
常用用法: cat -n /etc/profile | more
:分页浏览文件内容(cat只能浏览文件,不能修改。为了浏览方便,一般会带上 管道命令 | more)
以全屏方式按页显示文本文件内容:more 要查看文件
more指令内置若干快捷键,如:
空格:向下翻一页
回车:向下翻一行
q:立即离开,不再显示文件内容
Ctrl+F:向下滚动一屏
Ctrl+B:返回上一屏
=:输出当前行号
:f:输出文件名和当前行号
以分屏形式查看文件内容:less 要查看文件
比more指令更加强大,并不是一次将整个文件加载后才显示,而是根据需要加载内容,对于显示大型文件具有较高的效率
less指令内置快捷键,如:
空格:向下翻一页
pagedown:向下翻一页
pageup:向上翻一页
/字串:向下搜索[ 字串 ]的功能;n:向下查找 N:向上查找
?字串:向上搜索[ 字串 ]的功能;n:向上查找 N:向下查找
q:离开
输出重定向>
和追加>>
基本语法:
1)ls -l > a.txt
:列表的内容写入文件a.txt(文件不存在就创建,覆盖写)
2)ls -al >> a.txt
:列表内容追加到文件a.txt的末尾
3)cat 文件1 > 文件2
:将文件1的内容覆盖到文件2
4)echo "内容" >> 文件
:把内容写入文件
输出内容到控制台:echo [选项] [输出内容]
显示文件开头部分内容:head 文件
:默认显示文件前10行head -n 5 文件
:显示文件头5行内容
显示文件尾部部分内容:tail 文件
:默认显示文件后10行tail -n 5 文件
:显示文件后5行内容tail -f 文件
:实时追踪文件的所有更新,工作经常使用!!
软链接,类似windows的快捷方式:ln -s [原文件或目录] [软链接名]
:给原文件创建一个软链接
注:1)删除软链接 rm -rf 软链接名
,不带/;
2)进入软链接pwd
显示的还是软连接的目录
查看执行过的历史命令:history [数字]
还可以再执行历史命令history之后,使用!编号
执行历史命令
时间日期类:
显示当前日期:date
显示当前年份:date +%Y
显示当前月份:date +%m
显示当前日期:date +%d
显示年月日时分秒:date "+%Y-%m-%d %H:%M:%S"
设置日期:date -s 字符串时间(%Y-%m-%d %H:%M:%S格式)
查看日历信息:cal [年份]
:不加选项显示当前日期
搜索查找类:
find
指令从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端find [搜索范围] [选项]
搜索范围:通常是目录
选项:
- name:按照文件名名字查找
- user:按照用户名查找
- size:按照文件大小查找 (+n大于 -n小于 n等于)
样例:查找/
目录下所有.txt的文件:find / -name *.txt
locate
指令快速定位文件路径。利用locate数据库实现快速定位locate 搜索文件
特别说明:由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
样例:使用locate指令快速定位hello.txt文件:
updatedb
locate hello.txt
grep指令和管道符号 |
:
grep过滤查找,管道符 |表示:将前一个命令的处理结果输出传递给后面的命令处理grep [选项] 查找内容 源文件
选项:
- n:显示匹配行号
- i:忽略字母大小写
样例:在hello.txt文件中,查找”yes/Yes”所在行,并显示行号:cat hello.txt | grep -ni yes
压缩和解压缩:
gzip/gunzip指令
gizp用于压缩文件,gunzip用于解压文件gizp 文件
:压缩文件,只能压缩成.gz格式,源文件不保留gunzip 文件.gz
:解压文件
zip/unzip指令
zip用于压缩文件,unzip解压,在工作中打包发布很有用zip [选项] xxx.zip 将要压缩的内容
:压缩文件和目录的命令
选项:-r 递归压缩,即压缩目录unzip [选项] xxx.zip
:解压缩文件
选项:-d<目录> 指定解压后文件的存放目录
tar指令
:打包指令,最后打包后的文件是.tar.gztar [选项] xxx.tar.gz 要打包的内容
选项:
- c 产生tar打包文件
- v 显示详细信息
- f 指定压缩后的文件名
- z 打包同时压缩
- x 解包tar文件
tar -zcvf myFile.tar.gz a.txt b.txt
:将当前目录下的a.txt和b.txt打包为myFile.tar.gztar -zcvf myHomeFile.tar.gz /home/
:将/home目录下全部文件打包为myHomeFile.tar.gztar -zxvf myFile.tar.gz -C /usr/tmp
:将myFile.tar.gz解压到指定/usr/tmp目录
组管理和权限管理
Linux中每个用户都必须属于特定的组
Linux中每个文件都有所有者、所在组、其他组的概念
查看文件/目录所有者和所在组
指令:ls -ahl:以列表形式和human形式将全部文件名列出
修改文件所有者
指令:chown [ -R ] 用户名 文件名
组的创建
指令:groupadd 组名
修改文件所在组
指令:chgrp [ -R ]组名 文件名
改变用户所在组
指令:usermod -g 组名 用户名
usermod -d 目录名 用户名:改变该用户登录的初始目录
权限简介
ls指令后文件
第0位:文件类型5种: -普通文件 d目录 l软链接 c字符设备(键盘、鼠标) b块文件(硬盘)
第1-3位:文件所有者权限:r读 w写 x执行
第4-6位:文件所在组用户权限:r读 w写 x执行
第7-9位:文件其他组的用户权限:r读 w写 x执行
第10位:是文件表示硬链接个数;是目录表示子目录个数
第11位:用户所有者
第12位:用户所在组
第13位:文件大小,目录则默认为4096
第14位:文件最近修改时间
第15位 文件名
rwx权限
rwx权限作用在文件和目录上的含义不完全相同。
权限可用数字表示: r = 4 w = 2 x = 1
作用在文件上,要求要多一些,尤其是w写权限
r代表文件可读可查看;
w代表文件可修改,但不能删除。删除文件的前提条件是对该文件所在目录有写权限,才能删除;
x代表可执行文件
作用上目录上,要求低一些,好理解一些
r表示可读目录
w表示可写可修改目录,在目录内可创建、删除、重命名目录
x表示可执行,可进入该目录
修改权限
chmod指令可以修改文件或者目录权限
第一种方式:+、-、=变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u,g,o的总和)
1) chmod u=rwx,g=rx,o=x 文件目录名
:赋值权限
2) chmod o+w 文件目录名
:增加权限
3) chmod a-x 文件目录名
:减少权限
第二种方式:通过数字变更权限
规则:r=4 w=2 x=1 ; rwx=4+2+1=7chmod u=rwx,g=rx,o=x 文件目录名
相当于 chmod 751 文件目录名
修改文件所有者(拓展):
chown [选项] newowner file
:改变文件的所有者chown [选项] newowner:newgroup file
:改变文件的所有者和所在组
选项:
-R 如果是目录,则使其下所有子文件或者目录递归生效
任务调度概述
系统在某个时间执行的特定命令或程序
分类:1.系统工作,如病毒扫描等;2.个别用户工作,如MySQL数据库备份
基本语法
语法:crontab [选项]
选项:
- e:编辑crontab定时任务
- l:查询crontab任务
- r:删除当前用户所有的crontab任务
注:简单任务不要写脚本,直接在crontab中加入任务即可;复杂任务则需要写shell脚本
快速入门:
设置任务调度文件:/etc/crontab
设置个人任务调度。执行crontab -e
命令
接着输入任务到调度文件,如:
*/1 * * * * ls -l /etc/ > /tmp/to.txt命令
步骤如下:
1) cron -e
2) /1 * ls-l /etc >> /tmp/to.txt
3) 当保存退出后就执行
4) 在每一分钟都会自动的调用 ls -l /etc >> /tmp/to.txt
crontab任务参数细节说明:
5个占位符的说明
项目 含义 范围
第一个“” 一小时当中的第几分钟 0-59
第二个“” 一天当中的第几小时 0-23
第三个“” 一个月当中的第几天 1-31
第四个“” 一年当中的第几月 1-12
第五个“*” 一周当中的星期几 0-7(0和7都代表星期日)
特殊符号的说明
:代表任何时间。比如第一个“ ”就代表一小时中每分钟都执行一次。
,:代表不连续的时间。比如“0 8,12,16 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令。
-:代表连续的时间范围。比如“ 0 5 1-6命令”,代表在周一到周六的凌晨5点0分执行命令
/n:代表每隔多久执行一次。比如“ /10 *命令”,代表每隔10分钟就执行一遍命令
应用案例:
每天凌晨2:00将mysql数据库testdb,备份到文件中mydb.bak。
1)先编写一个文件 /home/mytask3.sh
/usr/local/mysql/bin/mysqldump -u root-p root testdb > /tmp/mydb.bak
2)给mytask3.sh一个可执行权限
chmod 744 /home/mytask3.sh
3)crontab -e
4)0 2 * /home/mytask3.sh
5)成功
crond相关指令
crontab -r
: 终止任务调度crontab -l
: 列出当前有哪些任务调度service crond restart
:重启任务调度
磁盘分区、挂载
分区类型有mbr分区和gtp分区,由于分区和容量问题,现多常用gtp分区。
挂载
Linux中只有一个根目录,是独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
Linux采用一种叫“载入”的处理方法,它的整个文件系统中包含了一整套文件和目录,且将一个分区和一个目录联系起来,此时载入的分区就能在存储空间下的一个目录下获得。
硬盘说明
Linux硬盘分为IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
IDE:“hdx~”
其中
x为盘号,a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘
~代表分区,前四个分区用数字1到4表示,是主分区或扩展分区,从5开始就是逻辑分区
例:hda3:第一个IDE硬盘上第三个主分区或扩展分区
SCSI:“sdx~” x和~表示含义与IDE硬盘一样
查看系统分区和挂载情况
lsblk -f
“老师不离开”
挂载经典样例-虚拟机中增加硬盘
1)VM虚拟机中新加硬盘,重启系统,显示新增
2)分区 fdisk /dev/sdb
3)格式化 mkfs -t ext4 /dev/sdb1
4)挂载 先创建一个 /home/newdisk,挂载mount /dev/sdb1 /home/newdisk
取消挂载 umount /dev/sdb1
或者 umount /home/newdisk
5)设置自动挂载(永久挂载,重启系统后挂载仍然存在)vim /etc/fstab
磁盘情况查询
df -lh
(disk free):查询系统整体磁盘使用情况du [选项] /目录
(disk usage):查询指定目录的磁盘占用情况
选项:
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
—max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
样例:查询/opt目录的磁盘占用情况,深度为1
du -ach --max-depth=1 /opt
磁盘情况-工作实用指令
1)统计/home文件夹下文件个数ls -l /home | grep "^-" | wc -l
2)统计/home文件夹下目录个数ls -l /home | grep "^d" | wc -l
3)统计/home文件夹下文件的个数,包括子文件夹里的ls -lR /home | grep "^-" | wc -l
4)统计文件夹下目录的个数,包括子文件夹里的ls -lR /home | grep "^d" | wc -l
5)以树状显示目录结构yum install tree
tree
网络配置
网络的配置文件在:/etc/sysconfig/network-scripts/ifcfg-eth0
具体修改具体分析
修改完之后,要重启服务:service network restart
或reboot
进程管理
显示系统执行的进程
ps [选项]
选项:
- a:显示当前终端的所有进程信息
- u:以用户的格式显示进程信息
- x:显示后台进程运行的参数
一般来说使用的参数是 ps -aux | more
或者ps -aux | grep xxx
ps指令详解:
USER:用户名称
PID:进程号
%CPU:进程占用CPU的百分比
%MEM:进程占用物理内存的百分比
VSZ:进程占用的虚拟内存大小(KB)
RSS:进程占用的物理内存大小(KB)
TTY:终端名称,缩写
STAT:进程状态。
S-休眠,s-会话的先导进程,N-拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵尸进程,T-被跟踪或者被停止
STARTED:进程的启动时间
TIME:CPU时间,即进程使用CPU的总时间
COMMAND:启动进程所用的命令和参数
ps -ef
:以全格式显示当前所有进程和父进程
-e:显示所有进程
-f:全格式
常用格式:ps -ef | grep xxx
,是BSD风格
UID:用户ID
PID:进程ID
PPID:父进程ID
C:CPU用于计算执行优先级的因子。
数值越大,表明该进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是IO密集型运算,执行优先级会提高
STIME:进程启动时间
TTY:完整的终端名称
TIME:CPU时间
CMD:启动进程所用的命令和参数
终止进程
kill
和killall
kill [选项] 进程号
:通过进程号杀死进程
选项:
-9:表示强迫进程立即停止killall 进程名称
:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
样例:
1)踢掉某个非法登录用户
ps -aux | grep sshd
kill 进程id(用户名@pts)
2)终止远程登录服务sshd,在适当时候再次重启sshd服务
ps -aux | grep sshd
kill 进程id(usr/sbin/sshd)
3)终止多个gedit编辑器(killall,通过进程名称来终止进程)
killall gedit
4)强制杀掉一个终端(/bin/bash)
ps -aux | grep bash
kill -9 进程id
查看进程树
pstree [选项]
选项:
-p:显示进程PID
-u:显示进程的所属用户
服务(service)管理
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求。比如mysqld,ssh,防火墙等,因此我们又称为守护进程,是Linux中非常重要的知识点。
service管理指令:service 服务名 start | stop | restart | reload | status
CentOS7.0后,不再使用service
,而是systemcl
使用案例:
查看当前防火墙的状况,关闭防火墙和重启防火墙service iptables status
service iptables start
service iptables stop
CentOS7以后:systemctl status firewalld
systemctl start firewalld
systemctl stop firewalld
细节讨论:
1.关闭或者启动防火墙后,立即生效(windows下可以用telnet
测试某个端口是否可用)
2.这种方式只是临时生效,重启系统后,还是回归以前对服务的设置
3.若希望设置某个服务自启动或者永久关闭生效,要使用chkconfig指令
查看服务名
方式1:setup中的 系统服务
方式2:ls -l /etc/init.d/
服务的运行级别
查看或者修改默认级别:vim /etc/inittab
总共7种级别(0-6)
详见上面笔记
开机的流程说明
开机 —— BIOS —— /boot —— init进程1 —— 运行级别 ——运行级别对应的服务
设置每个服务的各个运行级别设置自启动/关闭(限CentOS)
基本语法:
1)chkconfig --list | grep xxx
2)chkcongfig 服务名 --list
3)chkconfig --level 5 服务名 on/off
:在运行级别5时,服务要不要自启动
chkconfig 服务名 on/off
:在所有运行级别中,服务要不要启动
centOS7.x后:systemctl list-unit-files
entOS 7.x 开始 systemctl 与 chkconfig
动态监控进程
top与ps命令很相似,他们都用来显示正在执行的进程。top与ps最大的不同之处在于top在执行一段时间可以更新正在运行的进程。
基本语法:
top [选项]
选项:
- d 秒数:指定top命令每隔几秒更新,默认是3秒在top命令的交互模式当中可以执行的命令
- i:使top不显示任何闲置或者僵尸进程
- p:通过指定监控进程ID来仅仅监控某个进程的状态
交互操作说明:
操作 功能
P 以CPU使用率排序,默认为此选项
M 以内存的使用率排序
N 以PID排序
q 退出top
样例:
1.监视特定用户:
输入top命令
,按回车键,查看执行进程
再输入u
,按回车键,再输入用户名
即可
2.终止指定进程:
输入top命令
,按回车键,查看执行进程
再输入k
,按回车键,再输入要结束的进程ID号
即可
3.指定系统状态更新的时间(每隔10秒自动更新,默认是3秒)
输入top -d 10
4.交互操作
在输入top命令
后,按M
等上述操作
查看系统网络情况(重要)
基本语法:
netstat [选项]
,常用操作:netstat -anp
选项:
- an:按一定顺序排列输出
- p:显示哪个进程在调用
样例:
1)查看所有网络服务信息
netstat -anp | more
2)请查看服务名为sshd的服务信息
netstat -anp | grep sshd
包管理器
RPM包管理
RPM:RedHat Package Manager 红帽 包管理器
以火狐(firefox)为例:
查询具体的安装软件包信息:rpm -qa | grep firefox
其中,noarch所有平台表示通用
查询所有安装的软件包:rpm -qa | more
查询软件包详细信息:rpm -qi | grep firefox
查询软件包中安装了哪些文件:rpm -ql firefox
查询文件属于哪个软件包:rpm -qf /etc/passwd
卸载软件包:rpm -e firefox
注:删除包时可能会出现破坏依赖性的情况,若一定要删除,需要强制删除rpm -e --nodeps firefox
安装软件包:rpm -ivh firefox
-i:install 安装
-v:verbose 提示
-h:hash 进度条
样例:安装firefox浏览器
1.首先找到firefox安装rpm包,需要挂载安装centos的iso文件,然后在/media/下找firefox
2.cp firefox-xx.x.x-el6.centos.x86_64.rpm /opt/
3.rpm -ivh firefox
YUM包管理
yum是shell前端软件包管理器,基于rpm包管理,能够从指定服务器自动下载rpm包并安装,可以自动处理依赖关系,一次安装所有依赖的软件包
yum的基本指令:
以火狐(firefox)为例:
查询yum服务器是否有需要安装的软件:yum list | grep firefox
安装指定的yum包:yum install firefox