尚硅谷linux常用操作

目录

应当明确的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.gz
tar [选项] 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.gz
tar -zcvf myHomeFile.tar.gz /home/:将/home目录下全部文件打包为myHomeFile.tar.gz
tar -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=7
chmod 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 restartreboot


进程管理

显示系统执行的进程

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:启动进程所用的命令和参数

终止进程

killkillall
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


大数据定制 —— Shell