操作系统(科普)

1.操作系统可以直接和硬件打交道(最重要的作用),在操作系统中,封装了许多的方法(系统调用),供程序直接使用来操作硬件。

2.在没有操作系统的计算机上编写代码,就必须要用机器语言 0 和 1

3.在计算机上安装了操作系统后,就可以在操作系统上安装支持的高级语言环境,用于高级语言的开发

4.操作系统分类

桌面操作系统

服务器操作系统

嵌入式操作系统

移动设备操作系统

5.用户操作系统

单用户操作系统:指一台计算机在同一时间只能有一个用户使用,一个用户独享系统的全部硬件和软件资源

多用户操作系统:指一台计算机在同一时间可以有多个用户使用

6.在 linux 系统中没有盘符的概念,所有文件都存储在**根目录下/**,home 目录最重要,其中存储着所有用户的文件,并且每个用户只能在自己的文件夹中进行操作

linux 命令

基础命令

常用 linux 命令

1
2
3
4
5
6
7
# ls(list),查看当前文件夹下的内容
# pwd(print work directory),查看当前所在文件夹
# cd[目录名](change directory),切换文件夹
# touch[文件名](touch),如果文件不存在,新建文件
# mkdir[目录名](make directory),创建目录
# rm[文件名](remove),删除指定的文件
# clear(clear),清屏

linux 终端命令的格式

1
2
3
4
5
command [-options] [parameter]

"[]"代表可选
options:可用来对命令进行控制,也可以省略
parameter:传给命令的参数,可以有也可以没有。

查阅命令的帮助信息

1
2
3
4
5
6
7
8
1.command --help,显示command命令的帮助信息
2.man command,查阅command命令的使用手册
3.使用man command时的操作键
空格 -- 下一页
enter -- 滚动一行
b -- 前一页
f -- 下一页
q -- 退出

文件和目录

查看目录内容

  • ls 后面也可以有参数,表示显示置顶目录下的内容

  • 常用选项

1
2
3
4
5
1.以点开始的文件是隐藏文件
2.ls -a,显示所有文件和目录包含隐藏文件和目录
3.ls -l,以列表的形式显示详细内容(包括时间等)
4.-h 配合-l以人性化的方式显示文件的大小
5.选项的写法 ls -l -h(ls -lh),选项可以连在一起写,也可以分开写

通配符的使用(跟正则表达式差不多)

  • *代表任意多个字符(0 - 无穷大)

    • 找到以数字 1 开始的文件或目录,ls 1*
    • 找到以数字 1 结尾的文本,ls *1.txt
  • ?代表一个字符

  • [] 表示可以匹配字符组中的任意一个, [abc]、[a-c]

切换目录

  • cd / 回到根目录
  • cd ~ 回到 home 目录,及当前用户目录
  • cd - 在最近两次工作目录之间来回切换
  • 相对路径是相对当前目录进行定位
  • 绝对路径是相对 /目录或者 ~目录进行定位

目录文件操作

1
2
3
# mkdir创建文件夹
# -p 选项,可以创建多级目录
# 在 linux 下文件和目录是不可以重名的
1
2
3
4
# touch创建文件
# 如果文件已经存在,可以修改文件的最后修改日期
# 如果文件不存在,可以创建一个空白的文件
# 如果参数是一个文件名,意味着在当前路径创建,如果文件名前有路径,就是在指定路径下创建该文件
1
2
3
4
5
6
7
# rm删除文件或文件夹
# 使用 rm 删除文件和目录时,不能恢复,会直接从磁盘上删除
# -r 选项,递归的删除目录下的内容,用来删除目录
# -f 选项,强制删除,存在则删除,不存在则没有报错

rm -r * # 删除当前目录的所有文件和目录
rm *1.txt # 删除所有以1结尾的txt文件

*拷贝和移动文件

1
2
3
4
# cp复制文件或目录
# 格式:cp 源文件 目标文件
# -i 选项,覆盖文件和目录前进行提示,文件存在才提示,不存在就不提示
# -r 选项,在复制目录时需要使用该选项
1
2
3
# tree以树状图的形式列出目录结构
# 格式:tree 目录名
# d 选项 表示只显示目录
1
2
3
# mv可以用来移动文件或者目录,或者把已经存在的文件或目录重命名
# 格式:mv 源文件 目标路径
# -i 选项,表示覆盖文件和目录前进行提示

查看文件内容

1
2
3
4
5
# cat查看文件内容、创建文件、合并文件、追加文件内容等功能
# 格式:cat 文件名
# **适合用来查看内容较少的文本
# -b 选项,会显示行号,不包括空行
# -n 选项,会显示行号,包括空行
1
2
# more分屏显示文件内容
# 适合内容较多的文本,用法和 man 查看命令的使用方法的用法一样
1
2
3
4
5
6
# grep是一个强大的文本搜索工具(正则匹配)
# -n 选项,显示匹配及行号
# -v 选项,显示不包含匹配文本的所有行
# -i 选项,忽略大小写
# ^a 搜索以 a 开头的文本,搜索内容是每一行
# a$ 搜索以 a 未行尾的文本,搜索内容是每一行

其他

  • 重定向 > 和 >> 将命令执行结果重定向到一个文件
    • > 表示输出,会覆盖文件原有的内容
    • >> 表示追加,会讲内容追加到已有文件的末尾
  • echo 通常和重定向连用
    • 将输入参数显示在终端
    • 可以在创建文件的同时,指定文件的内容
  • 管道 |,more 和 grep 常用
    • linux 允许将一个命令的输出通过管道作为另一个命令的输入

远程管理

1.shutdown 命令

用法 shutdown 选项 时间

-r 选项表示重新启动-c 选项表示取消关机

**不指定选项和参数,默认表示 1 分钟后关闭电脑 **

远程维护服务器时,最好不要关闭系统,而是重启系统

1
2
3
4
5
6
7
8
9
10
11
# 重新启动系统 now表示现在
shutdown -r now

# 立刻关机
shutdown now

# 系统在今天20:25关机
shutdown 20:25

# 系统在过十分钟关机
shutdown +10

2.查看或配置网卡信息

网卡是一个专门负责网络通讯的硬件设备

ip 地址是设置在网卡上的地址信息,每一台联网的电脑都会有 ip 地址

ifconfig 命令,查看/配置计算机当前的网卡配置信息

ping 命令,检测到目标 ip 地址的链接是否正常,也可以测试网速大小。检测本地网卡是否正常 ping 127.0.0.1

3.远程登录 ssh 服务器

ssh(secure shell)

ssh 客户端的使用

  • 书写方式:ssh [-p port] user@remote,可以使用此命令登陆到支持 ssh 的服务器
  • user:是在远程机器上的用户名,如果不指定的话默认时当前用户
  • remote:是远程机器的地址,可以是 ip 地址或域名
  • port:是 ssh server 监听的端口,默认时 22

ssh 是目前较可靠,专门为远程登录会话和其他网络服务提供安全性的协议

ssh 协议可以有效的防止远程管理过程中的信息泄漏

ssh 的传输数据时经过压缩的,可以加快传输速度

端口号:通过端口号可以找到计算机上运行的应用程序,默认端口可以省略

使用 exit 退出当前用户的登录

4.远程复制文件 scp(secure copy)

1
2
3
4
5
#把本地当前目录下的01.py文件复制到远程目录下
scp -P port 01.py user@remote:(远程服务器的具体目录)

#如果具体目录不是绝对路径 则以用户的home目录作为参考路径
scp -P port user@remote:(远程服务器上的目录) 本地目录
1
2
3
4
5
6
7
# 复制文件夹 需要使用-r选项

把远程home目录下的文件夹复制到 本地当前目录下

scp -r user@remote:(目标目录) demo

scp -r demo user@remote:(远程服务器上的目录)

5.ssh 高级、配置别名(不常用)

1
2
3
4
5
6
7
非对称加密

在客户端执行这两行代码

ssh-keygen

ssh-copy-id -p port user@remote

配置别名 简化 ssh 登录和 scp 复制

1
2
3
4
5
6
7
8
9
10
# 在ssh文件夹下创建config文件(在ssh客户端创建)

# 登陆到远程服务器 ssh 别名

scp -r 当前目录 别名:远程服务器的目标目录

Host 别名
HostName ip地址
User 远程计算机的用户名
Port 服务器端口

6.用户和权限的基本概念

用户是 linux 系统工作中重要的一环,用户管理包括用户

在 linux 中,可以指定每一个用户针对不同文件或者目录的不同权限

文件/目录的权限包括

1
2
3
4
5
read 读 r 数字代号 4

write 写 w 数字代号2

excute 执行 x 数字代号1

ls -l可以查看文件夹下文件的详细信息,从左到右依次是:

  • 权限:第一个字符如果是 d 表示目录,否则是文件,剩余的字符分为 3 组,每一组有 3 个字符组成,分别是文件的拥有者及当前用户、用户组、其他用户
  • 硬链接数:通俗的讲,就是有多少种方式,可以访问到当前的文件/目录,文件的硬链接数一般是 1,目录的硬链接数取决于该目录的子目录有多少(与孙目录没关系)
  • 拥有者:home 目录下 文件/目录 的拥有者通常都是当前用户
  • 组:在 Linux 中,很多时候,会出现组名和用户名相同的情况
  • 大小
  • 时间
  • 名称

chmod 简单使用(重要)

  • chmod 可以修改用户/组文件/目录的权限

  • 命令格式

1
2
3
4
5
6
7
8
9
10
# +增加权限
# -减少权限

chmod +/-rwx 文件名/目录名

# 如果目录没有了可执行权限,就不可以对他进行一些操作了 cd ls touch mkdir等

# 如果目录没有了可读权限,就不可以对他使用ls操作了 ls

# 如果目录没有了可写权限,就不可以对他进行 touch mkdir等操作了

超级用户

linux 系统中的root 账号通常用于系统的维护和管理,对操作系统的所有资源具有所有访问权限

sudo 命令有 5 分钟的有效期,超过期限需要重新输入密码

sudo 命令用来以其他身份来执行命令,预设的身份是 root

组管理

创建组/删除组的终端命令都需要通过sudo来执行

组信息保存在**/etc/group 文件中**

/etc 目录是专门用来保存系统配置信息的目录

1
2
3
4
5
6
7
8
9
# 添加组
groupadd 组名

# 删除组
groupdel 组名

# 递归修改文件/目录的所属组
# 文件/目录默认的所属组是与当前用户同名的组
chgrp -R 组名 文件/目录名

用户管理

添加新用户

1
2
3
4
5
6
#-m 选项 自动创建用户home目录
#-g 选项 指定用户所在的组,否则会建立一个和用户同名的组

sudo useradd -m -g 组名 新建用户名

#通过useradd创建的新用户,默认是没有在sudo附加组中的,可以使用usermod进行添加

设置用户密码

1
2
3
#如果是普通用户直接使用passwd修改密码

sudo passwd 用户名

删除用户

1
2
3
#如果创建用户时没有添加-m选项,推荐直接删掉这个用户,重新创建

userdel -r 用户名

用户信息位置

1
2
3
4
5
6
7
8
9
#  /etc/passwd文件存放的是用户的信息,有6个分号组成的7个信息,分别是

1.用户名
2密码(x 表示加密的密码)
3.UID 用户标示
4.gid 组标示
5.用户全名或本地账号
6.home目录
7.登陆时使用的shell,就是登陆之后使用的终端命令,ubuntu默认是dash

查看用户信息

查看用户 UID 和 GID 信息

1
2
3
4
5
6
7
uid是用户id
gid是组id
/etc/passwd中有用户id和组id
/etc/group中只有组id

#命令格式
id 用户名

who查看当前所有登陆的用户列表

whoami查看当前用户是谁

usermod(需要使用 sudo)

  • 可以用来设置用户主组/附加组和登陆 shell

  • 主组:通常在新建用户时指定,在/etc/passwd 的地 4 列 gid 对应的组

  • 附加组:在/etc/group 中最后一列表示该组用户列表,用于指定用户的附加权限

1
2
3
#可以使用一下命令查看当前用户有多少附加组

cat -n /etc/group | grep 用户名
  • 设置了用户的附加组之后,需要重新登陆才生效
1
2
3
4
5
6
7
8
9
#修改用户的主组(passwd中的gid)
usermod -g 组名 用户名

#修改用户的附加组
usermod -G 组名 用户名

#修改用户登陆 shell
#ubuntu默认使用dash shell
usermod -s /bin/bash 用户名

which(重要)

  • /etc/passwd是用来保存用户信息的文件

  • /usr/bin/passwd是用来修改用户密码的程序

  • which 命令可以查看执行命令的所在位置

1
2
3
4
5
which ls  #/bin/ls

which useradd #/usr/sbin/useradd

#cd这个命令是内置在内核中的,所以使用which命令是查不到他的所在位置的

bin 和 sbin

  • 在 linux 中,绝大多数的可执行文件都是保存在/bin、/sbin、/usr/bin、/usr/sbin
  • /bin(binary)是二进制可执行文件目录,主要用于具体应用
  • /sbin(system binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理
  • /usr/bin(user commands for applications)后期安装的一些软件
  • /usr/sbin(super user commands for applications)超级用户的一些管理程序

切换用户

1
2
3
4
5
6
7
8
9
10
11
12
#使用场景
当当前用户的权限不够时,可以切换用户来执行当前操作

#命令格式
- 可以切换到用户的home目录,否则保持位置不变
su - 用户名

#退出当前用户
exit

#直接使用su 或 sudo命令可以直接切换到root用户 不安全
在root用户下就不存在权限问题了

修改文件权限

1
2
3
4
5
6
7
8
9
10
11
12
13
# 修改文件/目录的拥有者 ls -l第三列
chown 用户名 文件名/目录

# 递归修改文件/目录的组
chgrp -R 组名 文件名/目录

# R的作用是将目录下的所有文件/目录的权限都修改

# 递归修改文件/目录权限
chmod -R +/-wrx 文件名/目录名

#使用3个数字来代表 当前用户/所在组/其他用户 的权限
chmod -R 755 文件名/目录名

系统信息相关

主要是为了方便通过远程终端维护服务器,查询相关信息

查看系统时间

1
2
3
4
5
6
# 查看系统时间
date

# 查看当前月的日历
# -y 选项 查看一年的日历
cal(calendar

查看系统空间

1
2
3
4
5
6
# 显示磁盘剩余空间 disk free
# -h 选项 以人性化的形式显示文件大小
df -h

# 显示指定目录空间使用情况 disk usage
du -h [目录名]

查看进程信息,所谓进程,就是一个正在运行的程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看进程的详细状况 process status
# ps 默认只会显示当前用户通过终端启动的应用程序(不带参数时)
a 表示显示终端上的所有进程,包括其他用户的进程
u 表示显示进程的详细状态(包括用户等等)
x 表示显示没有控制终端的进程
ps aux

# 动态显示运行中的进程并且排序(cpu 内存 占比高的进程)
# 使用 q 来退出top
top

# 终止指定代号的进程 -9表示强行终止
# 使用kill命令时,最好只终止有当前用户开启的进程,而不要终止root身份开启的进程,否则可能导致系统崩溃
kill [-9] 进程代号(pid)

其他命令

find 查找文件

1
2
3
4
5
# 查找指令路径下扩展名为.py的文件,包括子目录
find [路径] -name "*.py"

如果省略路径,表示在当前文件夹下查找
可以配合通配符使用

软链接

在 linux 中,文件名和文件数据时分开存储的

1
2
3
4
5
6
# 类似于创建快捷方式
ln -s 被链接的源文件 快捷方式的名字

源文件要使用绝对路径,不能使用相对路径

# 没有 -s 选项建立的是一个硬链接

打包压缩

打包 tar

1
2
3
4
5
6
# 打包文件
# 打包多个文件 用空格隔开
tar -cvf 打包文件.tar 被打包的文件/路径

#解包文件
tar -xvf 打包文件.tar

压缩 gzip(-z) ,bzip2(-j)

1
2
3
4
5
6
7
8
# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩文件/路径

# 解压文件
tar -zxvf 打包文件.tar.gz

# 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径

软件安装 apt(advanced)

1
2
3
4
5
6
7
8
# 安装软件
sudo apt install 软件名

# 卸载软件
sudo apt remove 软件名

# 更新软件
sudo apt upgrade 软件名