Linux笔记7-系统管理

进程与服务

服务管理命令

红帽6使用service chkconfig 等命令来管理系统服务。红帽7使用的命令时systemctrl.
服务的启动、重启、停止、重载、状态查看命令对比如下(CentOS7中测试两种命令都支持):
在这里插入图片描述
在这里插入图片描述
服务设置开机启动、不启动、查看各级别下服务启动状态命令对比如下:
在这里插入图片描述

监视资源与管理进程

Linux系统中时刻运行着许许多多的进程,合理的管理他们有助于系统性能优化。系统进程共有五种状态:
R 运行:正在运行或在队列中等待
S 中断:休眠中,在等待某个条件形成或接受到信号。
D 不可中断:收到信号不唤醒或不可运行,进程必须等待直到有中断发生
Z 僵死:进程已终止,但进程描述符还存在,直到父进程调用wait4()后释放
T 停止:进程收到 SIGSTOP SIGSTP SIGTIN SIGTOU信号后停止运行

ps命令

ps 命令用于查看系统中的进程状态,格式为 ps [参数]
查看进程与状态: ps -aux
查看特定进程信息: ps -aux|grep 进程名
参数
a 显示所有进程(包括其他用户的)
x 显示没有控制终端的进程
u 显示用户及其他详细信息

top命令

top 命令用于监视进程活动与系统负载 格式 top
top命令可以看做是强化版的windows任务管理器,执行效果如下

在这里插入图片描述
信息说明如下:
在这里插入图片描述

pidof命令

用于查询 某个特定程序的pid值,格式:pidof[参数][程序名称]

kill命令

用于终止特定pid 的进程。格式为 :kill [参数][进程pid]

[root@localhost ~]# ps -ef | grep sshd
root       1118      1  0 20:49 ?        00:00:00 /usr/sbin/sshd -D
root       8360   1118  0 20:49 ?        00:00:00 sshd: root@pts/0
root       9718   9666  0 21:05 pts/0    00:00:00 grep --color=auto sshd
[root@localhost ~]# kill -9 8360   

killall命令

用来终止某个特定名称的所有进程,格式:killall [参数][进程名称]

Ctrl+c和Ctrl+z

在终端中正在运行某个命令,可以通过ctrl+c 组合键 来终止 命令进程。
在终端中正在运行某个命令,可以通过ctrl+z 组合键 来暂停进程(挂载到后台)

操作示例

执行如下脚本 [root@localhost ~]# (while true ;do echo -n " working " >> ~/jobs.txt;sleep 1 ;done;) 看到~/jobs.txt 文件每隔一秒写入一次数据。

[root@localhost ~]# (while true ;do echo -n " working  " >> ~/jobs.txt;sleep 1 ;done;)   --~/jobs.txt  开始每秒写入一个 working
^Z   --组合按键  Ctrl+z 后 进程被挂起,同时 ~/jobs.txt 内容写入暂停
[1]+  Stopped                 ( while true; do
    echo -n " working  " >> ~/jobs.txt; sleep 1;
done )
[root@localhost ~]# jobs --调用jobs 可以查看被挂起的进程
[1]+  Stopped                 ( while true; do
    echo -n " working  " >> ~/jobs.txt; sleep 1;
done )
[root@localhost ~]# bg  --执行 bg 可以让挂起的进程 在后台执行, 文件中又开始写入数据
[1]+ ( while true; do
    echo -n " working  " >> ~/jobs.txt; sleep 1;
done ) &
[root@localhost ~]# fg  --fg让后台挂起的进程在前台来执行
( while true; do
    echo -n " working  " >> ~/jobs.txt; sleep 1;
done )
^C -- 直接退出进程
[root@localhost ~]# 

后台有多个进程时 可以通过 bg/fg +jobs 中任务序号来操作某一个具体进程

[root@localhost ~]# jobs
[1]-  Stopped                 ( while true; do
    echo -n " working  " >> ~/jobs.txt; sleep 1;
done )
[2]+  Stopped                 ( while true; do
    echo -n " working222  " >> ~/jobs.txt; sleep 1;
done )
[root@localhost ~]# bg 1
[1]+ ( while true; do
    echo -n " working  " >> ~/jobs.txt; sleep 1;
done ) &
[root@localhost ~]# fg 2
( while true; do
    echo -n " working222  " >> ~/jobs.txt; sleep 1;
done )

如果执行命令的终端退出,那么在后台执行的任务也就停止了。
如果某一个命令我们想让它直接在后台执行,不在前台显示输出和等待 可以直接 在命令后加 “&” 符号。
如下:

[root@localhost ~]# (while true ;do echo -n " working  " >> ~/jobs.txt;sleep 1 ;done;)&
[1] 13477

远程控制服务

sshd服务

SSH(SecureShell)是一种能够提供安全远程登录会话的协议,可以远程执行Linux命令。
ssh提供两种安全验证方法:
基于口令的安全验证: 通过账号密码登录到远程主机
预计秘钥的安全验证: 在本地生成秘钥对 后,将公钥传至服务端,进行公共秘钥的比较。
sshd服务的配置文件位置/etc/ssh/sshd_config,如下:

[root@localhost ~]# cat /etc/ssh/sshd_config
#       $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
.......

主要配置项说明如下:
在这里插入图片描述
在这里插入图片描述
配置修改后一定要重启服务才能生效。

systemctl restart sshd.service

ssh命令

用于远程管理linux主机,格式:ssh [参数] 主机

-p 指定连接端口 默认 22
-v 显示连接过程详细信息 

如下使用 通过密码登录 主机 192.168.204.12

[root@localhost ~]# ssh 192.168.204.12
The authenticity of host '192.168.204.12 (192.168.204.12)' can't be established.
ECDSA key fingerprint is SHA256:P3koD/MoKyAms7BYfEvHnUb9EhIwHpHF5S2eU6nbpBU.
ECDSA key fingerprint is MD5:2e:fc:c1:98:71:3e:af:d4:d7:75:e8:19:60:50:e4:b4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.204.12' (ECDSA) to the list of known hosts.
[email protected]'s password: 
Last login: Mon Nov 30 21:54:27 2020 from server03

ssh安全秘钥验证

使用密码验证终归存在这被暴力破解和嗅探监听的危险,可以使用秘钥验证
第一步:本地主机生成秘钥对,并将公钥传至远程主机中

[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:LmSIbB7TgtRkfzwkiiDpYLyJogSF4za1fz9hB2P4Xcs [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|++.o . .         |
|Oo=.o +          |
|B++o.. +.        |
|+@ + ....+   .   |
|* O + o S + o .  |
|.o + + o + o E   |
|  .   o + o      |
|       . o       |
|          .      |
+----[SHA256]-----+
[root@localhost ~]# ssh-copy-id 192.168.10.12
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: ERROR: ssh: connect to host 192.168.10.12 port 22: Connection refused

[root@localhost ~]# ssh-copy-id 192.168.204.12
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '192.168.204.12'"
and check to make sure that only the key(s) you wanted were added.

第二步: 修改远程主机,ssh服务配置 开启秘钥认证,禁用密码认证,并重启服务

vi  /etc/ssh/sshd_config
PubkeyAuthentication yes
PasswordAuthentication no    不关闭也可以,关闭更安全

第三步: 本地主机执行 ssh命令连接 目标主机,可以直接连接

[root@localhost ~]# ssh  192.168.204.12
Last login: Mon Nov 30 21:55:29 2020 from server01
[root@server03 ~]# 

scp远程传输命令

如果像传输文件到其他linux主机 可以使用该命令。
格式:scp [参数] 本地文件 远程账号@目标ip:远程目录

[root@localhost ~]# scp -r test [email protected]:/root
[root@localhost ~]# ssh 192.168.204.12
Last login: Mon Nov 30 22:23:33 2020 from server01
[root@server03 ~]# ll
total 4
-rw-------. 1 root root 1260 Jun 10 05:26 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Dec  1 00:42 test

参数说明:

-v 显示详细连接进度
-P 指定远程主机的 sshd端口号
-r 传送文件夹时 加此参数
-6 使用ipv6协议

不间断会话服务

scren服务

使用终端连接服务器进行业务操作时会遇到一个问题,当终端被关闭时,终端中运行的任务也会中断,比如文件传输过程中如果终端关闭那么文件传输也就中断了,必须重新建立连接并传输。Screen专门为解决上述问题设计。用户可以使用screen命令同时控制多个命令行会话,自有切换,也可以进行一下操作:
会话恢复:即便网络中断,也可以随时恢复会话
多窗口:每个会话都是独立运行,拥有独立的窗口编号,输入输出和缓存
会话共享:可以多个用户从不同终端使用同一个会话,也可以让他们看到相同的输出。

后续用到再做总结,暂时跳过

猜你喜欢

转载自blog.csdn.net/zhangxm_qz/article/details/110392579