Linux基础
Linux目录结构
-
/bin
是Binary的缩写,这个目录存放着最经常使用的命令
-
/sbin
s是Super User的意思,这里存放的是系统管理员使用的系统管理程序
-
/home
存放普通用户的主目录,在Linux中每个用户都有一个自己的目录。
-
/root
该目录为系统管理员,也称作超级权限者的用户主目录
-
/lib
系统开机所需要最基本的动态连接共享库(DLL文件)
-
/lost+found
这个目录一般情况下是空的,当系统非法关机后,会生成临时文件
-
/etc
所有的系统管理所需要的配置文件和子目录
-
/usr
这是个非常重要的目录,用户的很多应用程序和文件都放在这个目录下
-
/boot
存放启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
-
/proc
是一个虚拟的目录,是系统内存的映射,可以通过直接访问这个目录来获取系统信息
-
/srv
service缩写,该目录存放一些服务启动之后需要提取的数据
-
/sys
这是Linux2.6内核的一个很大的变化,如果安装2.6内核中新出现的一个文件系统sysfs
-
/tmp
这个目录是用来存放一些临时文件的
-
/dev
类似与Windows的设备管理器,把所有的硬件用文件的形式存储
-
/media
Linux系统会自动识别一些设备(U盘,光驱),识别后,Linux会把识别的设备挂载到这个目录下
centos迁移到/run/media
-
/mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了
-
/opt
这是给主机额外安装软件所摆放的目录
-
/var
这个目录中存放着在不断扩充着的东西。
VI/VIM编辑器
一般模式
语法 | 功能描述 |
---|---|
yy | 复制光标当前一行 |
y数字y | 复制一段(从第几行到第几行) |
p | 箭头移动到目的行粘贴 |
u | 撤销上一步 |
dd | 删除光标当前行 |
d数字d | 删除光标(含)后多少行 |
x | 剪切一个字母,相当于del |
X | 剪切一个字母,相当于Backspace |
yw | 复制一个词 |
dw | 删除一个词 |
shift+6(^) | 移动到行头 |
shift+4 ($) | 移动到行尾 |
1+shift+g | 移动到页头,数字 |
shift+g | 移动到页尾 |
数字+shift+g | 移动到目标行 |
编辑模式
按键 | 功能 |
---|---|
i | 当前光标前 |
a | 当前光标后 |
o | 当前光标行的下一行 |
I | 光标所在行最前 |
A | 光标所在行最后 |
O | 当前光标行的上一行 |
指令模式
命令 | 功能 |
---|---|
:w | 保存 |
:q | 退出 |
:! | 强制执行 |
/要查找的词 | n 查找下一个,N 往上查找 |
:noh | 取消高亮显示 |
:set nu | 显示行号 |
:set nonu | 关闭行号 |
:%s/old/new/g | 替换内容 /g 替换匹配到的所有内容 |
网络配置和系统管理操作
网络和主机名
-
查看当前网络ip
ifconfig
-
查看IP配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
-
重启网络
service network restart
-
查看当前服务器主机名称
hostname
-
修改主机名称
vi /etc/hostname
-
修改hosts映射文件
vim /etc/hosts
关闭防火墙
service (CentOS 6版本)
-
查看网络服务的状态
service network status
-
停止网络服务
service network stop
-
启动网络服务
service network start
-
重启网络服务
service network restart
chkconfig 设置后台服务的自启配置(CentOS 6版本)
-
开启/关闭network(网络)服务的自动启动
chkconfig network on
chkconfig network off
-
开启/关闭 network服务指定级别的自动启动
chkconfig --level 指定级别 network on
chkconfig --level 指定级别 network off
systemctl(CentOS 7版本-重点掌握)
-
查看防火墙服务的状态
systemctl status firewalld
-
停止防火墙服务
systemctl stop firewalld
-
启动防火墙服务
systemctl start firewalld
-
重启防火墙服务
systemctl restart firewalld
systemctl 设置后台服务的自启配置(CentOS 7版本)
-
开启/关闭iptables(防火墙)服务的自动启动
systemctl enable firewalld.service
systemctl disable firewalld.service
临时关闭防火墙
-
查看防火墙状态
systemctl status firewalld
-
临时关闭防火墙
systemctl stop firewalld
开机启动时关闭防火墙
-
查看防火墙开机启动状态
systemctl enable firewalld.service
-
设置开机时关闭防火墙
systemctl disable firewalld.service
关机重启命令
-
将数据由内存同步到硬盘中
sync
-
重启
reboot
-
关机
halt
-
计算机将在1分钟后关机,并且会显示在登录用户的当前屏幕中
shutdown -h 1 ‘This server will shutdown after 1 mins’
-
立马关机(等同于 halt)
shutdown -h now
-
系统立马重启(等同于 reboot)
shutdown -r now
常用基本命令
帮助命令
-
man 获得帮助信息
信息 功能 NAME 命令的名称和单行描述 SYNOPSIS 怎样使用命令 DESCRIPTION 命令功能的深入讨论 EXAMPLES 怎样使用命令的例子 SEE ALSO 相关主题(通常是手册页) man ls
-
help 获得shell内置命令的帮助信息
help cd
常用快捷键
常用快捷键 | 功能 |
---|---|
ctrl + c | 停止进程 |
ctrl+l | 清屏;彻底清屏是:reset |
ctrl + q | 退出 |
善于用tab键 | 提示(更重要的是可以防止敲错) |
上下键 | 查找执行过的命令 |
ctrl +alt | linux和Windows之间切换 |
文件目录类
-
显示当前工作目录的绝对路径
pwd
-
列出目录的内容
基本语法
ls [选项] [目录或是文件]
选项说明
选项 功能 -a 全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用) -l 长数据串列出,包含文件的属性与权限等等数据;(常用)等价于“ll” -
cd 切换目录
参数说明
参数 功能 cd 绝对路径 切换路径 cd相对路径 切换路径 cd ~或者cd 回到自己的家目录 cd - 回到上一次所在目录 cd .. 回到当前目录的上一级目录 cd -P 跳转到实际物理路径,而非快捷方式路径 -
mkdir 创建一个新的目录
选项 功能 -p 创建多层目录 -
rmdir 删除一个空的目录
-
touch 创建空文件
-
cp 复制文件或目录
基本语法
cp [选项] source dest (功能描述:复制source文件到dest)
选项说明
选项 功能 -r 递归复制整个文件夹 参数说明
参数 功能 source 源文件 dest 目标文件 -
rm 删除文件或目录
选项 功能 -r 递归删除目录中所有内容 -f 强制执行删除操作,而不提示用于进行确认。 -v 显示指令的详细执行过程 -
mv 移动文件与目录或重命名
-
cat 查看文件内容
选项 功能描述 -n 显示所有行的行号,包括空行。 -
more 文件内容分屏查看器
操作 功能说明 空白键 (space) 代表向下翻一页; Enter 代表向下翻『一行』; q 代表立刻离开 more ,不再显示该文件内容。 Ctrl+F 向下滚动一屏 Ctrl+B 返回上一屏 = 输出当前行的行号 :f 输出文件名和当前行的行号 -
less 分屏显示文件内容
操作 功能说明 空白键 向下翻动一页; [pagedown] 向下翻动一页 [pageup] 向上翻动一页; /字串 向下搜寻『字串』的功能;n:向下查找;N:向上查找; ?字串 向上搜寻『字串』的功能;n:向上查找;N:向下查找; q 离开 less 这个程序; -
echo输出内容到控制台
基本语法 echo [选项] [输出内容] -e: 支持反斜线控制的字符转换
控制字符 | 作用 |
---|---|
\ | 输出\本身 |
\n | 换行符 |
\t | 制表符,也就是Tab键 |
-
head 显示文件头部内容
head 文件 (功能描述:查看文件头10行内容)
head -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)
-
tail 输出文件尾部内容
(1)tail 文件 (功能描述:查看文件尾部10行内容)
(2)tail -n 5 文件 (功能描述:查看文件尾部5行内容,5可以是任意行数)
(3)tail -f 文件 (功能描述:实时追踪该文档的所有更新)
-
> 输出重定向和 >> 追加
(1)ls -l > 文件 (功能描述:列表的内容写入文件a.txt中(覆盖写))
(2)ls -al >> 文件 (功能描述:列表的内容追加到文件aa.txt的末尾)
(3)cat 文件1 > 文件2 (功能描述:将文件1的内容覆盖到文件2)
(4)echo “内容” >> 文件
-
ln 软链接(软链接也成为符号链接,类似于windows里的快捷方式,有自己的数据块,主要存放了链接其他文件的路径)
基本语法
ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)
经验技巧
删除软链接: rm -rf 软链接名,而不是rm -rf 软链接名/
如果使用 rm -rf 软链接名/ 删除,会把软链接对应的真实目录下内容删掉
查询:通过ll就可以查看,列表属性第1位是l,尾部会有位置指向。
-
history 查看已经执行过历史命令
时间日期类
-
时间日期类
基本语法
date [OPTION]... [+FORMAT]
选项说明
选项 功能 -d<时间字符串> 显示指定的“时间字符串”表示的时间,而非当前时间 -s<日期时间> 设置系统日期时间 参数说明
参数 功能 <+日期时间格式> 指定显示时使用的日期时间格式 -
date 显示当前时间
(1)date (功能描述:显示当前时间)
(2)date +%Y (功能描述:显示当前年份)
(3)date +%m (功能描述:显示当前月份)
(4)date +%d (功能描述:显示当前是哪一天)
(5)date "+%Y-%m-%d %H:%M:%S" (功能描述:显示年月日时分秒)
-
date 显示非当前时间
(1)date -d '1 days ago' (功能描述:显示前一天时间)
(2)date -d '-1 days ago' (功能描述:显示明天时间)
-
date 设置系统时间
date -s 字符串时间
-
cal 查看日历
查看当前月的日历
cal
查看2017年的日历
cal 2017
用户管理命令
-
useradd 添加新用户
useradd 用户名 (功能描述:添加新用户)
useradd -g 组名 用户名 (功能描述:添加新用户到某个组)
-
passwd 设置用户密码
passwd 用户名
-
id 查看用户是否存在
id 用户名
-
cat /etc/passwd 查看创建了哪些用户
-
su 切换用户
su 用户名称 (功能描述:切换用户,只能获得用户的执行权限,不能获得环境变量)
su - 用户名称 (功能描述:切换到用户并获得该用户的环境变量及执行权限)
-
userdel 删除用户
(1)userdel 用户名 (功能描述:删除用户但保存用户主目录)
(2)userdel -r 用户名 (功能描述:用户和用户主目录,都删除)
-
who 查看登录用户信息
(1)whoami (功能描述:显示自身用户名称)
(2)who am i (功能描述:显示登录用户的用户名以及登陆时间)
-
sudo 设置普通用户具有root权限
-
usermod 将用户加入到用户组
usermod -g root zhubajie
用户组管理命令
-
groupadd 新增组
-
groupdel 删除组
-
groupmod 修改组
修改atguigu组名称为atguigu1
groupmod -n xitian xitianqujing
-
cat /etc/group 查看创建了哪些组
文件权限类
-
chmod 改变权限
第一种方式变更权限
chmod [{ugoa}{+-=}{rwx}] 文件或目录
第二种方式变更权限
chmod [mode=421 ] [文件或目录]
经验技巧
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
r=4 w=2 x=1 rwx=4+2+1=7
(1)修改文件使其所属主用户具有执行权限
cp xiyou/dssz/houge.txt ./
chmod u+x houge.txt
(2)修改文件使其所属组用户具有执行权限
chmod g+x houge.txt
(3)修改文件所属主用户执行权限,并使其他用户具有执行权限
chmod u-x,o+x houge.txt
(4)采用数字的方式,设置文件所有者、所属组、其他用户都具有可读可写可执行权限。
chmod 777 houge.txt
(5)修改整个文件夹里面的所有文件的所有者、所属组、其他用户都具有可读可写可执行权限。
chmod -R 777 xiyou/
-
chown 改变所有者
修改文件所有者
chown atguigu houge.txt
递归改变文件所有者和所有组
chown -R atguigu:atguigu xiyou/
-
chgrp 改变所属组
搜索查找类
-
find 查找文件或者目录
基本语法
find [搜索范围] [选项]
选项 功能 -name<查询方式> 按照指定的文件名查找模式查找文件 -user<用户名> 查找属于指定用户名所有文件 -size<文件大小> 按照指定的文件大小查找文件,单位为: b —— 块(512字节) c —— 字节 w —— 字(2字节) k —— 千字节 M —— 兆字节 G —— 吉字节 (+n 大于 -n小于 n等于) -
locate 快速定位文件路径 可搜索文件或文件夹
locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。
由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。
updatedb
locate tmp
-
grep 过滤查找及“|”管道符
选项 功能 -n 显示匹配行及行号。 查找某文件在第几行
ls | grep -n test
压缩和解压类
-
gzip/gunzip 压缩
基本语法
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)
gunzip 文件.gz (功能描述:解压缩文件命令)
经验技巧
(1)只能压缩文件不能压缩目录
(2)不保留原来的文件
(3)同时多个文件会产生多个压缩包
-
zip/unzip 压缩
基本语法
zip [选项] XXX.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令)
unzip [选项] XXX.zip (功能描述:解压缩文件)
zip选项 功能 -r 压缩目录 unzip选项 功能 -d<目录> 指定解压后文件的存放目录 经验技巧
zip 压缩命令在window/linux都通用,可以压缩目录且保留源文件。
-
tar 打包
tar [选项] XXX.tar.gz 将要打包进去的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)
选项 功能 -c 产生.tar打包文件 -v 显示详细信息 -f 指定压缩后的文件名 -z 打包同时压缩 -x 解包.tar文件 -C 解压到指定目录
磁盘分区类
-
df 查看磁盘空间使用情况 (df: disk free 空余硬盘)
选项 功能 -h 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示; -
fdisk 查看分区
选项 功能 -l 显示所有硬盘的分区列表 Linux分区
Device:分区序列
Boot:引导
Start:从X磁柱开始
End:到Y磁柱结束
Blocks:容量
Id:分区类型ID
System:分区类型
-
lsblk 查看设备挂载情况
选项 功能 -f 查看详细的设备挂载情况,显示文件系统信息 -
mount/umount 挂载/卸载
基本语法
mount [-t vfstype] [-o options] device dir (功能描述:挂载设备)
umount 设备文件名或挂载点 (功能描述:卸载设备)
参数说明
参数 功能 -t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有: 光盘或光盘镜像:iso9660 DOS fat16文件系统:msdos Windows 9x fat32文件系统:vfat Windows NT ntfs文件系统:ntfs Mount Windows文件网络共享:smbfs UNIX(LINUX) 文件网络共享:nfs -o options 主要用来描述设备或档案的挂接方式。常用的参数有: loop:用来把一个文件当成硬盘分区挂接上系统 ro:采用只读方式挂接设备 rw:采用读写方式挂接设备 iocharset:指定访问文件系统所用字符集 device 要挂接(mount)的设备 dir 设备在系统上的挂接点(mount point)
进程线程类
-
ps 查看当前系统进程状态(ps:process status 进程状态)
基本语法
ps -aux | grep xxx (功能描述:查看系统中所有进程)
ps -ef | grep xxx (功能描述:可以查看子父进程之间的关系)
选项说明
选项 功能 -a 选择所有进程 -u 显示所有用户的所有进程 -x 显示没有终端的进程 功能说明
(1)ps -aux显示信息说明
USER:该进程是由哪个用户产生的
PID:进程的ID号
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位KB;
RSS:该进程占用实际物理内存的大小,单位KB;
TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。
STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台
START:该进程的启动时间
TIME:该进程占用CPU的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名
(2)ps -ef显示信息说明
UID:用户ID
PID:进程ID
PPID:父进程ID
C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU时间
CMD:启动进程所用的命令和参数
经验技巧
如果想查看进程的CPU占用率和内存占用率,可以使用aux;
如果想查看进程的父进程ID可以使用ef;
-
kill 终止进程
kill [选项] 进程号 (功能描述:通过进程号杀死进程)
killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
选项 功能 -9 表示强迫进程立即停止 -
pstree 查看进程树
pstree [选项]
选项 功能 -p 显示进程的PID -u 显示进程的所属用户 -
top 查看系统健康状态
top [选项]
选项 功能 -d 秒数 指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行的命令: -i 使top不显示任何闲置或者僵死进程。 -p 通过指定监控进程ID来仅仅监控某个进程的状态。 操作 功能 P 以CPU使用率排序,默认就是此项 M 以内存的使用率排序 N 以PID排序 q 退出top 查询结果字段解释
第一行信息为任务队列信息
内容 说明 12:26:46 系统当前时间 up 1 day, 13:32 系统的运行时间,本机已经运行1天 13小时32分钟 2 users 当前登录了两个用户 load average: 0.00, 0.00, 0.00 系统在之前1分钟,5分钟,15分钟的平均负载。一般认为小于1时,负载较小。如果大于1,系统已经超出负荷。 第二行为进程信息
Tasks: 95 total 系统中的进程总数 1 running 正在运行的进程数 94 sleeping 睡眠的进程 0 stopped 正在停止的进程 0 zombie 僵尸进程。如果不是0,需要手工检查僵尸进程 第三行为CPU信息
Cpu(s): 0.1%us 用户模式占用的CPU百分比 0.1%sy 系统模式占用的CPU百分比 0.0%ni 改变过优先级的用户进程占用的CPU百分比 99.7%id 空闲CPU的CPU百分比 0.1%wa 等待输入/输出的进程的占用CPU百分比 0.0%hi 硬中断请求服务占用的CPU百分比 0.1%si 软中断请求服务占用的CPU百分比 0.0%st st(Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比。 第四行为物理内存信息
Mem: 625344k total 物理内存的总量,单位KB 571504k used 已经使用的物理内存数量 53840k free 空闲的物理内存数量,我们使用的是虚拟机,总共只分配了628MB内存,所以只有53MB的空闲内存了 65800k buffers 作为缓冲的内存数量 第五行为交换分区(swap)信息
Swap: 524280k total 交换分区(虚拟内存)的总大小 0k used 已经使用的交互分区的大小 524280k free 空闲交换分区的大小 409280k cached 作为缓存的交互分区的大小 -
netstat 显示网络统计信息和端口占用情况
netstat -anp | grep 进程号 (功能描述:查看该进程网络信息)
netstat –nlp | grep 端口号 (功能描述:查看网络端口号占用情况)
选项说明
选项 功能 -n 拒绝显示别名,能显示数字的全部转化成数字 -l 仅列出有在listen(监听)的服务状态 -p 表示显示哪个进程在调用
crontab 系统定时任务
-
crontab 服务管理
重新启动crond服务
systemctl restart crond
-
crontab 定时任务设置
crontab [选项]
选项 功能 -e 编辑crontab定时任务 -l 查询crontab任务 -r 删除当前用户所有的crontab任务 参数说明
[root@hadoop101 ~]# crontab -e
(1)进入crontab编辑界面。会打开vim编辑你的工作。
* * * * * 执行的任务
项目 含义 范围 第一个“*” 一小时当中的第几分钟 0-59 第二个“*” 一天当中的第几小时 0-23 第三个“*” 一个月当中的第几天 1-31 第四个“*” 一年当中的第几月 1-12 第五个“*” 一周当中的星期几 0-7(0和7都代表星期日) (2)特殊符号
特殊符号 含义 * 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。 , 代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令 - 代表连续的时间范围。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨5点0分执行命令 */n 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔10分钟就执行一遍命令 (3)特定时间执行命令
时间 含义 45 22 * * * 命令 在22点45分执行命令 0 17 * * 1 命令 每周1 的17点0分执行命令 0 5 1,15 * * 命令 每月1号和15号的凌晨5点0分执行命令 40 4 * * 1-5 命令 每周一到周五的凌晨4点40分执行命令 */10 4 * * * 命令 每天的凌晨4点,每隔10分钟执行一次命令 0 0 1,15 * 1 命令 每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。
软件包管理
RPM
-
RPM查询命令(rpm -qa)
rpm -qa (功能描述:查询所安装的所有rpm软件包)
由于软件包比较多,一般都会采取过滤。rpm -qa | grep rpm软件包
-
RPM卸载命令(rpm -e)
(1)rpm -e RPM软件包
(2) rpm -e --nodeps 软件包
选项 功能 -e 卸载软件包 --nodeps 卸载软件时,不检查依赖。这样的话,那些使用该软件包的软件在此之后可能就不能正常工作了。 -
RPM安装命令(rpm -ivh)
rpm -ivh RPM包全名
选项 功能 -i -i=install,安装 -v -v=verbose,显示详细信息 -h -h=hash,进度条 --nodeps --nodeps,不检测依赖进度
YUM
-
YUM的常用命令
yum [选项] [参数]
选项 功能 -y 对所有提问都回答“yes” 参数 功能 install 安装rpm软件包 update 更新rpm软件包 check-update 检查是否有可用的更新rpm软件包 remove 删除指定的rpm软件包 list 显示软件包信息 clean 清理yum过期的缓存 deplist 显示yum软件包的所有依赖关系