# Linux 补充

# 认识 Linux 环境

网卡的配置文件 ##远程登录 Linux 系统

一般的 Linux 系统都是用来做服务器来使用的,所以我们必须要操作它,服务器之所以叫做服务器是因为上面跑着很多服务,服务永不停止,这样才能在有需要的时候提供一些功能。如果不能远程登录到服务器上去,那么程序就没法部署上去。因为现在的服务器大多数都在机房或者都是云服务器,所以需要远程连接登录上去。

# 远程登录协议

ssh root@192.168.0.104
1

ssh 远程登录到服务器,退出

exit
1

# 不同操作系统下远程登录的方式

windows

1 老牌的终端软件 putty

2.XShell (opens new window)

3.Cmder (opens new window) (比较推荐在微软 Terminal 出之前) Linux 和 MacOS

Linux 和 MacOS 的终端里面登录都自带了 ssh 命令,可以通过 ssh 命令来登录远程服务器。

# scp

scp 是 Linux 上的一个命令,Mac 也可以使用。这个命令的主要作用就是远程复制文件。

这个命令使用的是加密连接,和 ssh 加密的通道一样。

远程复制文件的三种姿势

1.本地文件复制到远程服务器上

把本地文件复制到远程服务器上是部署的一个基本操作,通过 scp 命令可以完成:

//scp 文件名 服务器的用户名@服务器的ip:复制到的路径
//如果上传的是目录: scp -r 文件名 服务器的用户名@服务器的ip:复制到的路径
scp test.zip root@192.168.0.104:/test//上面命令的意思是把本地的test.zip文件复制到远程
//服务器的/test目录去。
1
2
3
4

2.远程服务器的文件复制到本地

scp 是一个远程复制文件命令,当然也可以从远程复制到本地。复制到本地很简单:

//scp 服务器的用户名@服务器的ip:文件路径 复制到的路径

//如果上传的是目录: scp -r 服务器的用户名@服务器的ip:文件路径 复制到的路径


 scp -r root@192.168.0.104:~/test ~/
1
2
3
4
5
6

3.远程服务器文件复制到远程服务器

这种方式指的是一个远程服务器的文件复制到另一个远程服务器上,而且只需要在本地执行。可想而知这个命令的强大。


//scp 服务器的用户名@服务器的ip:文件路径 服务器的用户名@服务器的ip:复制到的路径

//scp -r 服务器的用户名@服务器的ip:文件路径 服务器的用户名@服务器的ip:复制到的路径

scp -r root@192.168.0.104:~/test root@192.168.0.106:~/
1
2
3
4
5
6

help

更多的 scp 命令语法可以通过查看帮助文档来学习。

但是 scp –help 命令提供的是简单文档

# 网络管理命令

# 查看 ip

ifconfig //非常古老的

ip addr//新版本(centos 7版本以上)

1
2
3
4

# 有时候 ip 地址找不到的启动网卡

如果有时候我们要重启网卡,一定要在图形化界面上重启,如果在终端中远程登录,就是直接掉线。

网卡的配置文件:/etc/sysconfig/network-scripts/ifcfg- [name] 查看网卡的配置文件 cat /etc/sysconfig/network-scripts/ifcfg- [name] 如图:

网卡的配置文件

安装的过程没有激活网卡 ONBOOT = “no”需要 vi 修改

关闭网卡:ifdown 网卡名称

启动网卡:ifup 网卡名称

# route

若果 route 没有找到,可以一下两种方式解决

第一种方式

//因为都是以前的命令所以找不到,可以安装
yum install net-tools
1
2

第二种方式

ip route
1

route 命令用于帮助诊断网络。当局域网访问不了互联网的时候,我们首先使用 ping 命令执行下,如果没有得到返回,那么可能就是网络出了问题,那么就可以使用 route 命令查看一下路由配置对不对。

route

Destination:路由名称。

Gateway:表示网关。

Genmask:表示通过网关可以达到什么样的网段。

Ifce:Interface,表示网络走的是什么网卡。

# 查询 Linux 网络端口

# ss 命令

ss -an //输出进程的信息就会包括端口号
1

如图

ss

ss-anp //显示使用网络的进程
1

如图

ss-anp

使用管道机制查询单个网络端口

ss -anp | grep 80
ss -an | grep 80

1
2
3

# netstat 命令

netstat 命令和 ss 命令用法相同。

# Linux 进程管理相关命令

# top 命令

top 命令相当于 windows 的任务管理器,显示所有进程的状态。属于动态

top

# ps 命令

ps 命令用于显示当前进程 (process) 的状态,查看当前操作系统某一瞬间净化才能的状态.

ps

ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 无法中断的休眠状态 (通常 IO 的进程)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# ps aux

如图:

ps aux

1.user:表示这个进程是以哪一个用户启动的。

2.command:进程的权限,是在用户身上继承下来的,如果以 root 身份启动,那么这个进程会获得 root 用户的所有权限。

3.pid:进程编号

4.stat : 当前一瞬间,进程的状态。(S:休眠状态,Z:僵尸状态(父进程已经死掉了,子进程没有被操作系统及时的回收))

特殊的进程:1 号进程是用来管理其他进程的,这个进程是杀不了的,1 号进程是所有其他进程的父进程,如果父进程死了,子进程一块死掉。

####查找特定的进程

ps aux | grep 服务名
1

管道命令 ‘|’ 符号: 把前面命令产生的结果,传给后面的命令

1.ps aux :查看当前操作系统某一个瞬间所有进程的状态。

2.grep 服务名:筛选,在上面命令的结果中筛选出指定服务名的进程

查找特定的进程

显示了三个服务,但是只有上面两个是 sshd 的服务,第一个是父进程,第二个是子进程,第三个是 grep 查找的服务。

# 区分父进程和子进程

看 pid,谁的 pid 小,谁就有可能是父进程。

# 杀死进程

# kill 命令

kill 进程的pid

kill -9 进程的pid //强制杀死进程
1
2
3

原理: kill 功能是向操作系统发一个信号过去,linux 操作系统有 32 种信号(各有各的用途),-9 就表示 9 号信号,9 号信号的意思就是强制关闭一个进程。不加 -9 就是让进程自行退出的信号。

# pkill 命令

pkill 命令和 kill 类似,主要是 pkill 后面跟的是进程的名称,kill 后面跟的是进程的 pid。

kill 进程的名称
1

# w 命令

显示当前谁登陆了远程服务器上。

w

# last 命令

账号所有的登陆历史

last
1

显示上 10 条

last -n 10
1

登陆失败的

lastb
1

# Linux 怎么管理服务

# 查看服务名

systemctl status 服务名 
1

# 停止服务

systemctl stop 服务名 
1

# 开启服务

systemctl start 服务名 
1

# 重启服务

systemctl restart 服务名 
1

# 重新加载一个服务的配置文件(不是通用的 nginx)

systemctl reload 服务名 
1

# 操作系统概述

# 古老的操作系统

古老的 Dos 系统,它是 windows 系统的前身,最早的 windows 是构建在 Dos 系统下面的,作为 Dos 系统的一种增强型界面。后来 windows95 出现之后,windows 就独立了,它不依赖 Dos 了,反而 Dos 就成为了一个子系统嵌入到 windows 中,一直到今天(现在的终端不是 Dos 了,但是一直使用着 Dos 的命令)。

# windows

windows 作为中国普遍的操作系统是适用于工作和娱乐的。但是在开发环境下相对于 Mac 和 Linux 就有些欠缺,windows 的终端也没有 Mac 和 Linux 强大。

# Linux

Linux 系统是一个开源的操作系统,适合程序员做开发。Linux 的桌面不是很成熟,但是服务器系统是非常强大的。

# MacOS

MacOS 应该是程序员中最普遍使用的操作系统了,有着成熟的桌面同时终端也非常强大,适合程序员做开发

# 行编辑器 vi/vim

由于我们是远程登录到 Linux 服务器,又因为远程服务器并没有图形化界面,所以在编辑器方面 vim 是一个神奇。vim 是 vi 的增强版。

vim

1.vim 三种模式:命令模式、插入模式、编辑模式。使用 ESC 或 i 或:来切换模式。

2.命令模式下


:q  退出

:q! 强制退出

:wq 保存并退出

:set number  显示行号

:set nonumber  隐藏行号

/host  在文档中查找host 按n跳到查找下一个,shift+n查找上一个

yyp  复制光标所在行,并粘贴

h(左移一个字符←)、j(下一行↓)、k(上一行↑)、l(右移一个字符→)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 下载命令

在终端中的下载命令有两个。

1.wget

wget url 下载

wget -c url :断点续传,下载失败了,执行这个会在断开的地方下载。
1
2
3

2.curl

curl url 下载
1

curl 功能更加强大,可以控制 http 头

# Linux 帮助

1.命令 -h:显示帮助。

2.man 命令:显示命令的帮助文档。这个 man 命令实际上是一个小数据库,存放着各种命令的帮助文档。

# 常用的终端快捷键

ctrl + s:暂停屏幕输出:不要轻易的挂起终端,可能会导致一个服务启动失败。

ctrl + c:结束正在运行的程序(ping,telnet 等)

ctrl + d:结束输入或退出 shell

ctrl + q:恢复屏幕输出。

ctrl + l:清屏,等同于 Clear。

ctrl + a/ctrl + e 快速移动光标到行首/行尾。