服务器硬件与操作系统

网友投稿 627 2022-10-02

服务器硬件与操作系统

服务器硬件与操作系统

一、服务器硬件

一)CPU

1、查看CPU信息

CPU总核数 = 物理CPU个数 * 每颗物理CPU的核数   总逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数

查看CPU信息(型号)[root@test ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 24 Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz# 查看物理CPU个数[root@test ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l2# 查看每个物理CPU中core的个数(即核数)[root@test ~]# cat /proc/cpuinfo| grep "cpu cores"| uniqcpu cores : 6# 查看逻辑CPU的个数[root@test ~]# cat /proc/cpuinfo| grep "processor"| wc -l24

二、Linux操作系统

一)进程

1、进程的5种状态

运行(正在运行或在运行队列中等待)中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

ps工具标识进程的5种状态码:

D 不可中断 uninterruptible sleep (usually IO)

Ss+  ,其中,s表示这个进程是一个会话领导进程 ;+表示前台进程组

R 运行 runnable (on run queue)S 中断 sleepingT 停止 traced or stoppedZ 僵死 a defunct ("zombie") process

注: 其它状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页)

ps -e -o pid,stat,pri,uid,cmd --sort

2、进程优先级

在 Linux 系统中,表示进程优先级的有两个参数:Priority 和 Nice。

其中,PRI 代表 Priority,NI 代表 Nice。这两个值都表示优先级,数值越小代表该进程越优先被 CPU 处理。不过,PRI值是由内核动态调整的,用户不能直接修改。所以我们只能通过修改 NI 值来影响 PRI 值,间接地调整进程优先级。

PRI 和 NI 的关系如下:

PRI (最终值) = PRI (原始值) + NI

其实,大家只需要记得,我们修改 NI 的值就可以改变进程的优先级即可。NI 值越小,进程的 PRI 就会降低,该进程就越优先被 CPU 处理;反之,NI 值越大,进程的 PRI 值就会増加,该进程就越靠后被 CPU 处理。  修改 NI 值时有几个注意事项:

NI 范围是 -20~19。普通用户调整 NI 值的范围是 0~19,而且只能调整自己的进程。普通用户只能调高 NI 值,而不能降低。如原本 NI 值为 0,则只能调整为大于 0。只有 root 用户才能设定进程 NI 值为负值,而且可以调整任何用户的进程。

3、改变进程优先级

当 Linux 内核尝试决定哪些运行中的进程可以访问 CPU 时,其中一个需要考虑的因素就是进程优先级的值(也称为 nice 值)。每个进程都有一个介于 -20 到 19 之间的 nice 值。默认情况下,进程的 nice 值为 0。  进程的 nice 值,可以通过 nice 命令和 renice 命令修改,进而调整进程的运行顺序

1)nice命令

nice 命令可以给要启动的进程赋予 NI 值,但是不能修改已运行进程的 NI 值。

nice 命令格式如下:

[root@localhost ~] # nice

-n NI值:给命令赋予 NI 值,该值的范围为 -20~19;

2)renice命令

同 nice 命令恰恰相反,renice 命令可以在进程运行时修改其 NI 值,从而调整优先级。  renice 命令格式如下:

[root@localhost ~] # renice

注意,此命令中使用的是进程的 PID 号,因此常与 ps 等命令配合使用。

4、查看正在运行的进程

ps 命令的基本格式如下:

[root@localhost ~]# ps aux#查看系统中所有的进程,使用 BS 操作系统格式[root@localhost ~]# ps -le#查看系统中所有的进程,使用 Linux 标准命令格式

选项:

a:显示一个终端的所有进程,除会话引线外;u:显示进程的归属用户及内存的使用情况;x:显示没有控制终端的进程;-l:长格式显示更加详细的信息;-e:显示所有进程;

表头

含义

USER

该进程是由哪个用户产生的。

PID

进程的 ID。

%CPU

该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。

%MEM

该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。

VSZ

该进程占用虚拟内存的大小,单位为 KB。

RSS

该进程占用实际物理内存的大小,单位为 KB。

TTY

该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。

STAT

进程状态。常见的状态有以下几种:

  1. -D:不可被唤醒的睡眠状态,通常用于 I/O 情况。
  2. -R:该进程正在运行。
  3. -S:该进程处于睡眠状态,可被唤醒。
  4. -T:停止状态,可能是在后台暂停或进程处于除错状态。
  5. -W:内存交互状态(从 2.6 内核开始无效)。
  6. -X:死掉的进程(应该不会出现)。
  7. -Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。
  8. -<:高优先级(以下状态在 BSD 格式中出现)。
  9. -N:低优先级。
  10. -L:被锁入内存。
  11. -s:包含子进程。
  12. -l:多线程(小写 L)。
  13. -+:位于后台。

START

该进程的启动时间。

TIME

该进程占用 CPU 的运算时间,注意不是系统时间。

COMMAND

产生此进程的命令名。

5、信号量

进程的管理主要是指进程的关闭与重启。我们一般关闭或重启软件,都是关闭或重启它的程序,而不是直接操作进程的

系统中可以识别的信号较多,我们可以使用命令"kill -l"或"man 7 signal"来查询。命令如下

[root@localhost ~]#kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR111)SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15)SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN +4 39) SIGRTMIN +5 40) SIGRTMIN+6 41)SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN +9 44) SIGRTMIN +10 45) SIGRTMIN+11 46) SIGRTMIN+1247) SIGRTMIN+13 48) SIGRTMIN +14 49) SIGRTMIN +15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX

1)常用信号量

信号代号

信号名称

说 明

1

SIGHUP

该信号让进程立即关闭.然后重新读取配置文件之后重启

2

SIGINT

程序中止信号,用于中止前台进程。相当于输出 Ctrl+C 快捷键

8

SIGFPE

在发生致命的算术运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为 0 等其他所有的算术运算错误

9

SIGKILL

用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。般用于强制中止进程

14

SIGALRM

时钟定时信号,计算的是实际的时间或时钟时间。alarm 函数使用该信号

15

SIGTERM

正常结束进程的信号,kill 命令的默认信号。如果进程已经发生了问题,那么这 个信号是无法正常中止进程的,这时我们才会尝试 SIGKILL 信号,也就是信号 9

18

SIGCONT

该信号可以让暂停的进程恢复执行。本信号不能被阻断

19

SIGSTOP

该信号可以暂停前台进程,相当于输入 Ctrl+Z 快捷键。本信号不能被阻断

2)平滑重启原理-USR1 USR2信号量使用

nginx常用信号量

TERM, INT

Quick shutdown

QUIT

Graceful shutdown  优雅的关闭进程,即等请求结束后再关闭

HUP

Configuration reload ,Start the new worker processes with

a new configuration Gracefully shutdown the old worker processes

改变配置文件,平滑的重读配置文件

USR1

Reopen the log files 重读日志,在日志按月/日分割时有用

USR2

Upgrade Executable on the fly 平滑的升级

WINCH

Gracefully shutdown the worker processes 优雅关闭旧的进程(配合USR2来进行升级)

重启流程

重启意味着新旧接替,在交接任务的过程中势必会存在新旧server并存的情形,因此,重启的流程大致为:启动新的server新旧server并存,两者共同处理请求,提供服务旧的server处理完所有的请求之后优雅退出

这里,最主要的问题在于如何保证新旧server可以并存,如果重启前后的server端口一致,如何保证两者可以监听同一端口

平滑重启命令了,一共两条命令

kill -USR2 `cat /var/run/nginx.pid`kill -QUIT `cat

第一条命令是发送信号USR2给旧的master进程,进程的pid存放在/var/run/nginx.pid文件中,其中nginx.pid文件路径由nginx.conf配置。第二条命令是发送信号QUIT给旧的master进程,进程的pid存放在/var/run/nginx.pid.oldbin文件中,随后旧的master进程退出

切割日志

在linux中,一个文件对应一个节点,才是在磁盘上的真实位置。nginx在读取/写入日志文件时,即便把日志文件改名了,还是指向那个节点(磁盘空间)。所以,要新建一个文件,再告诉nginx,读取/写入新的日志文件

kill -USR1 `cat /var/run/nginx.pid`

6、工作管理

工作管理指的是在单个登录终端(也就是登录的 Shell 界面)同时管理多个工作的行为

1)后台管理

后台管理有几个事项需要大家注意:

前台是指当前可以操控和执行命令的这个操作环境;后台是指工作可以自行运行,但是不能直接用 Ctrl+C 快捷键来中止它,只能使用 fg/bg 来调用工作。当前的登录终端只能管理当前终端的工作,而不能管理其他登录终端的工作。比如 tty1 登录的终端是不能管理 tty2 终端中的工作的。放入后台的命令必须可以持续运行一段时间,这样我们才能捕捉和操作它。放入后台执行的命令不能和前台用户有交互或需要前台输入,否则只能放入后台暂停,而不能执行。比如 vi 命令只能放入后台暂停,而不能执行,因为 vi 命令需要前台输入信息;top 命令也不能放入后台执行,而只能放入后台暂停,因为 top 命令需要和前台交互。

2)命令放到后台运行

"命令 &",把命令放入后台执行

把命令放入后台的方法是在命令后面加入​​空格 &​​。使用这种方法放入后台的命令,在后台处于执行状态

命令执行过裎中按 Ctrl+Z 快捷键,命令在后台处于暂停状态

使用这种方法放入后台的命令,就算不和前台有交互,能在后台执行,也处于暂停状态,因为 Ctrl+Z 快捷键就是暂停的快捷键

nohup命令:后台命令脱离终端运行

有以下 3 种方法:

把需要在后台执行的命令加入 /etc/rc.local 文件,让系统在启动时执行这个后台程序。这种方法的问题是,服务器是不能随便重启的,如果有临时后台任务,就不能执行了。使用系统定时任务,让系统在指定的时间执行某个后台命令。这样放入后台的命令与终端无关,是不依赖登录终端的。使用 nohup 命令。

3)查看当前终端放入后台的工作

jobs 命令可以用来查看当前终端放入后台的工作,工作管理的名字也来源于 jobs 命令。  jobs 命令的基本格式如下:

[root@localhost ~]#jobs [选项]

选项

含义

-l(L 的小写)

列出进程的 PID 号。

-n

只列出上次发出通知后改变了状态的进程。

-p

只列出进程的 PID 号。

-r

只列出运行中的进程。

-s

只列出已停止的进程。

当前终端有两个后台工作:一个是 top 命令,工作号为 1,状态是暂停,标志是"-";另一个是 tar 命令,工作号为 2,状态是暂停,标志是"+"。"+"号代表最近一个放入后台的工作,也是工作恢复时默认恢复的工作。"-"号代表倒数第二个放入后台的工作,而第三个以后的工作就没有"+-"标志了

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序跳一跳在哪里找?(微信小程序 跳一跳)
下一篇:小程序图片如何铺满整个屏幕?(微信小程序背景图片怎么铺满)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~