Basic Operations of Linux

ID:20LINUX1

总框架

  1. Linux基本操作与管理

[TOC]

Linux目录结构

  • linux系统的根目录只有一个("/")

  • “一切皆文件” 通过文件管理各种设备

    • [重点]/bin 是binary的缩写, 存放着最常用的命令
    • [重点]/sbin s是super的意思, 存放系统管理员使用的系统管理程序
    • [重点]/home 存放普通用户的主目录, 在linux中每个用户都有一个自己的目录, 一般该目录名是以用户的账号命名的
    • [重点]/root 该目录为系统管理员, 也成为超级权限者的用户主目录
    • /lib 系统开机所需要的最基本的动态连接共享库, 其作用类似于windows里的DLL, 几乎所用的应用程序都要用到这些共享库
    • /lost+found 一般空, 当系统非法关机后, 这里会存放一些文件
    • [重点]/etc 所有系统管理所需要的配置文件和子目录
    • [重点]/user 用户安装的应用程序和文件放在这里
    • [重点]/boot 启动linux时使用的一些核心文件, 包括一些连接文件和镜像文件
    • /proc /srv /sys 别动的目录
    • /dev device 类似于windows的设备管理器, 把所有的硬件用文件的形式储存
    • [重点]/media linux系统会自动识别一些设备, 例如U盘, 光驱等, 当识别后会被挂载在这个目录下
    • [重点]/mnt 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。
    • /opt 给主机额外安装软件所摆放的目录 默认为空
    • [重点]/user/local 这是另一个给主机额外安装软件所安装的目录, 一般是通过编译源码方式安装的程序
    • [重点]/var 这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件。
    • /selinux SELinux是-种安全子系统,它能控制程序只能访问特定文件。类似于360

    image-20200611113556123

Linux基本操作

远程登录Linux

  • 工具: Xshell5 远程登录到linux的软件 命令行操作
  • 远程上传: Xftp6 SFTP服务(22号端口)
  • 需要Linux开启SSHD服务 (22号端口)

vi和vim编辑器

三种常见模式:

image-20200611151021337
  1. 正常模式: 默认模式, 可以使用上下左右移动光标, 删除字符, 快捷键复制粘贴

  2. 编辑模式: 按下i,I,o,O,a,A,r,R等进入

  3. 命令行模式: 完成存盘, 读取, 替换等动作

    • :wq write and quit 保存并退出
    • :q quit 退出不保存
    • :q! 强制退出不保存

常用快捷键:

基本快捷键 快捷键 作用
yy 5yy 拷贝当前行下的5行
p 粘贴
dd 5dd 删除
(命令行下)/[字符串] 查找;
n: next 查找下一个
(命令行下):set nu :set nonu 出现/取消行号
G gg 移动到文档最后/开头
u 撤销
shift+g 移动到指定行

开机 重启 登录注销

指令 解释
shutdown -h now 立即关机
shutdown -h 1 1分钟后关机
shutdown -r now 现在重新启动计算机
halt 关机
sync 把内存的数据同步到磁盘上
logout 注销(这个指令在图形界面无效, 在运行级别3有效)

用户管理

Linux系统是一个多用户多任务的操作系统, 任何一个要使用系统资源的用户, 都必须先向系统管理员申请一个账号, 然后以这个账号的身份进入系统

Linux的用户至少要属于一个组

image-20200611160022682

用户

指令 操作
useradd Jack 添加用户Jack, 组名同Jack
useradd -d Man Jack 添加用户Jack 组:Man
userdel Jack 删除用户Jack 不删除组
userdel -r Jack 删除用户Jack 同时删除组
passwd Jack 给Jack添加密码
id Jack 查询用户信息
whoami 我是谁

高权限到低权限不需要密码, 用exit再返回到原来的用户

su Lucy
exit

指令 操作
groupadd Wudang 添加组
groupdel Wudang 删除组
useradd -g Wudang haha 创建haha并加入Wudang
usermod -g Shaolin haha[这条笔记似乎有问题] 创建Shaolin组 将haha移入

相关的几个文件

目录 信息
/etc/passwd 用户配置文件
/etc/group 组配置文件(组名:口令:组标识号:组内用户列表)
/etc/shadow 口令配置文件(密码和登录信息, 是加密的)
  • /etc/passwd

    image-20200611164841904

    类别 含义
    root 用户名
    0 用户ID
    0 组ID
    root 家目录
    /bin/bash shell

实用指令

指定运行级别

运行级别 指令 作用
0 关机
1 单用户(找回丢失密码)
2 多用户无网络服务
3**(常用)** 多用户有网络服务
4 保留
5**(常用)** 图形界面
6 重启
  • 系统的运行级别配置文件: /etc/inittab

  • 切换运行级别的基本语法:init <number>

  • 如果忘记root密码, 如何找回?: 进入单用户模式, 修改root密码. 因为进入单用户root模式不需要密码. (能进机房的都不是一般人)

man 获得帮助信息

man [command]

help 获得帮助信息

help [command]

文件目录类

类型 作用 说明
pwd 显示当前工作目录的绝对路径
ls [选项] [目录或文件] 列出当前目录所有内容信息 -a显示隐藏文件
-l列表呈现
cd …回到上一级
~或空回到家目录
mkdir [选项] [目录] 创建目录 -p 创建多级目录
rmdir [选项] [要删除的空目录] 删除目录 如果希望删除非空:
rm -rf []
rm [选项] [要删除的的文件或目录] -r 删除整个
-f 强制删除是不提示
touch 文件名称 创建文件 可以一次性创建多个文件
cp [选项] 文件 复制 -r 递归复制整个文件夹
\cp 可以强制覆盖不提示
mv 原来的 现在的 移动文件或重命名 看是否在一个目录下
cat [选项] 要看的文件 以只读的方式查看文件 -n 显示行号
| more 按页显示

more指令

操作 说明
空格 下一页
Enter 翻一行
q 离开
Ctrl+F 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行号
:f 输出文件名和当前的行号

less指令

更强大, 对显示大型文件有较高的效率. 并不是一次将整个文件加载完才显示.

操作 说明
空格 下一页
PageDown 下一页
PageUp 上一页
/字串 向下查找, n下一个, N上一个
?字串 向上查找, n下一个, N上一个
q 离开

输出重定向和追加指令

>输出重定向 >>追加

示例 含义
ls -l > a.txt 将列表信息覆盖写入a.txt (如果没有就创建)
ls -l >> a.txt 将列表信息追加到a.txt
cat a.txt > b.txt 把a中的内容复制到b
echo “hello” >> b.txt 把hello 写入b.txt
指令 作用 说明
echo [选项] [输出内容] 输入内容
head [文件] 显示文件开头, 默认10行 -n 5前5行
tail [文件] 显示文件末尾, 默认4行 -n 5 后5行
-f 实时追踪所有更新
指令 作用 说明
ln -s [源文件] [软链接名] 创建快捷方式 删除: rm -rf 链接
pwd仍是软连接所在目录
history 看执行过的历史命令 - 10 显示后10条
!178 执行编号为178的指令

时间日期类

指令 作用 说明
date 显示当前的时间 date “+%Y %m %d” 输出年月日
date -s 设置日期 date -s “字符串时间”
cal [选项] 以日历方式显示时间 cal 2020 显示2020日历

搜索查找类

指令 作用 说明
find [范围] [指令] [文件名] 从指定目录向下递归遍历各子目录,将满足的显示再终端 -name a.txt 按名字
-user root 按用户
-size +20K 按大小
find /home -name hello.txt
find /user -user root
find /user -size +20K
find /user -name *.txt	通配符
指令 作用 说明
locate 快速定位文件路径, 需要事先建立数据库

首先要updatedb创建数据库, 然后可以用locate hello.txt查找

指令 作用 说明
grep指令和管道符号| 过滤查找 -n 显示行号
-i 忽略大小写

管道符号|: 表示将前一个命令的处理结果输出传递给后面的命令处理

cat hello.txt | grep -n he

压缩和解压类

指令 作用 说明
gzip [文件名] 压缩为gz文件 原文件不保留
gunzip [文件名] 解压gz文件 原文件不保留
指令 作用 说明
zip [选项] [文件名] 项目打包很有用, 原文件保留 -r 递归全部
unzip [选项] [文件名] -d 指定目录
zip -r Mypackage.zip /home/
指令 作用 说明
tar [选项] 名字.tar.gz .tar.gz生成 -c 产生tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解压
tar 123.tar.gz -zcvf 1.txt 2.txt
tar -zxvf 123.tar.gz -C /home/ (指定的目录)

Linux组管理和权限管理

组管理

指令 作用 说明
ls -ahl 查看文件所有者和组信息 -a 显示隐藏的文件
-l 详细列表模式
-h 大小显示便于查看
chown 用户名 文件名 修改文件所有者 文件的位置并没有变化
chgrp 组名 文件名 修改文件所在组
usermod -g 组名 用户名 修改用户所在组

权限详解

-rw-r--r-- 1 root root   300 Jun 12 10:27 123.py
-rw-r--r-- 1 root root   435 Jun 11 16:16 Hello.py
-rw-r--r-- 1 root root 23996 Jun 10 14:51 install.sh
drwxr-xr-x 2 root root  4096 Jun 13 08:25 test1

image-20200614191949336

符号 含义 说明
d 文件类型 -:普通文件
d:目录
l:软连接
c:字符设备(键盘, 鼠标)
b:块文件, 硬盘
rwx 文件所有者权限 r:read
w:write
x:execute执行
r-x 组权限
r-x 文件其他组的用户的权限
2 数目 如果是文件:表示硬链接的数
如果是目录,则表示该目录的子目录个数
root 文件所有者
root 文件所在组
4096 文件大小 如果是目录,则是4096
否则表示文件大小(字节B)
Jun 13 08:25 文件最后修改时间
test1 文件名

注意

  1. 文件的 [w] 表示可以修改, 但是不代表可以删除; 删除一个文件的前提条件时对该文件所在的目录有写权限.
  2. 目录的 [w] 代表可写, 可以修改目录内创建+删除+重命名目录.
  3. 目录的 [x] 代表可执行, 即可以进入该目录.

rwx的数字表示

r=4, w=2, x=1

权限管理

指令 作用 说明
chmod 修改文件或目录权限 +,-,=变更权限
-R:如果是目录,则递归子目录
# u所有者	g所在组	o其他人	a所有人
chmod u=rwx,g=rx,o=x a.txt
chmod o+w a.txt
chmod 731 a.txt
指令 作用 说明
chown newowner file 修改文件所有者 -R:递归子目录
chgrp newgroup file 修改所在组 -R:递归子目录

Linux系统管理

任务调度

  • 注意: 要先给x权限
指令 作用 说明
crontab [选项] 定时任务 -e:编辑定时任务
-l:查询定时任务
-r:删除定时任务
crontab 定时任务
*/1 * * * * Hello World >> /home/Tom/a.txt		#表示每隔一小时执行该指令.
0 7,19 * * 7 	#表示每周日早上和晚上7点执行
项目 含义 范围
第一个* 一小时当中的第几分钟 0-59
第二个* 一天中的第几个小时 0-23
第三个* 一月当中的第几天 1-31
第四个* 一年当中的第几个月 1-12
第五个* 一周当中的星期几 0-7
特殊符号 含义
* 任何时间
, 不连续的时间
- 连续的时间范围
*/n 每隔多久执行一次

磁盘分区与挂载

image-20200617115517867

Linux硬盘分IDE硬盘和SCSI硬盘, 目前基本是SCSI硬盘

  • 对于IDE硬盘,驱动器标识符是hdx~;对于SCSI硬盘,sdx~;其中’x’是盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),’~'代表分区,前四个分区用数字1-4表示,他们是主分区或拓展分区,5之后为逻辑分区.[我这里看的是vd,和上述不同]
  • 可以用lsblklsblk -f查看分区信息

案例:挂载硬盘

  1. 分区: fdsk /dev/sdb按提示新建分区n,主分区p,分区号1,分区261(默认)

  2. 格式化: mkfs -t ext4 /dev/sdb1

  3. 挂载: mount /dev/sdb1 /home/newdisk 第二个参数是自定挂载目录

    umount取消挂载

  4. 设置自动挂载: vim /etc/fstab/, 在其中编辑; 之后执行mount -a生效

磁盘使用情况查询

df -l
df -lh
指令 作用 说明
df -lh 查询系统整体磁盘使用情况
du /目录 查询指定目录 -s指定目录占用大小汇总
-h带计量单位
-a含文件
-max-depth=1子目录深度
-c列出明细的同时增加汇总值
wc 统计数量 grep “^d” 查询文件夹的个数(正则表达式)
ls -l /home | grep "^d" | wc -l #统计文件夹数目
ls -lR /home | grep "^d" | wc -l #递归统计文件夹数目

网络配置

固定IP地址

vim /etc/sysconfig/network-scripts/ifcfg-eth0
  • onboot要打开
  • 如果是虚拟机, DNS和网关要一致
  • 输入service network restart重启服务

Linux进程管理

进程查询

  • 在LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号。
  • 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器
  • 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
  • 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
指令 作用 说明
ps 收看正在进行的指令 -a:显示当前终端的所有进程信息
-u:以用户的格式显示进程信息
-x:显示后台进程运行的参数
字段 说明
PID 进程识别号
TTY 终端机号
TIME 此进程消耗CPU时间
CMD 正在执行的命令或进程名

image-20200618182942659

USER:用户名称
PID:进程号
%CPU:进程占用cPU的百分比
%MEM:进程占用物理内存的百分比
VSZ:进程占用的虚拟内存大小(单位: KB)
RSS:进程占用的物理内存大小(单位: KB)
TT:终端名称,縮写.
STAT:进程状态,其中s-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,2- 僵死进程,T-被跟踪或者被停止等等
STARTED:进程的启动时间
TIME: CPU时间,即进程使用cPu的总时间
COMMAND:启动进程所用的命令和参数,如果过长会被截断显示

可以用管道符号筛选

ps -aux | grep sshd
指令 作用 说明
ps -ef 查看父进程 PPID
pstree 选项 更直观看进程信息 -p:显示PID
-u:显示所属用户

进程终止

指令 作用 说明
kill 选项 进程号 通过进程号kill进程 -9:强制停止
killall 进程名称 通过进程名称kill进程,支持通配符

服务管理(service)

服务(service),本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql, sshd防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。

指令: service 服务名 start/stop/restart/reload/status (临时生效)
在CentOS 7.0后, 不再使用service, 而是systemctl

通过telnet指令检测linux的某个端口是否运行并可以访问 [没找到]

收看服务名

方式1: 使用setup -> 系统服务 [CentOS7没有找到]

方式2: /etc/init.d/服务名称

chkconfig

可以给每个服务的各个运行级别设置自启动/关闭

  1. chkconfig --list | grep xx 收看服务 (系统提醒我用systemctl list-unit-files看更多的服务)
  2. chkconfig --level 5 服务名 on/off 后重启
  3. chkconfig 服务名

设置自启动或永久开启

动态进程监控

top命令与ps命令很相似, 但top在执行一段时间会自动更新

指令 作用 说明
top 选项 动态进程监控 -u:看某一用户
-k 进程号:杀死进程
-d 时间:刷新秒数

-P:以CPU使用率排序
-M:以内存使用率排序
-N:以PID排序
-q:退出

监控网络状态

指令 作用 说明
netstat 选项 查看系统网络情况 -an:按一定顺序排列输出
-p:显示哪个进程在用

Linux RPM和YUM

RPM

RPM: Red Package Manager

指令 作用
rpm -qa 查询已安装的包
rpm -qa | grep xx 查询xx的安装情况
rpm -q firefox 查询软件包firefox是否安装
rpm -qi firefox 查询软件包信息
rpm -ql firefox 查询软件包中文件
rpm -qf /etc/passwd 查询/etc/passwd文件所属的软件包
指令 作用 说明
rpm -e firefox 卸载firefox –nodeps:强制删除
rpm -ivh 包全路径名称 安装 i:安装
v:verbose提示
h:hash进度条

安装步骤

  1. 找rpm包,挂载上系统
  2. 执行指令

YUM

Yum是一个Shel前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所衣依赖的软件包。

需要联网,从网络获取.

指令 作用
yum list |grep xx 查询
yum install xxx 下载安装

默认安装最新版本