红帽6使用service chkconfig 等命令来管理系统服务。红帽7使用的命令时systemctrl.
服务的启动、重启、停止、重载、状态查看命令对比如下(CentOS7中测试两种命令都支持):
服务设置开机启动、不启动、查看各级别下服务启动状态命令对比如下:
Linux系统中时刻运行着许许多多的进程,合理的管理他们有助于系统性能优化。系统进程共有五种状态:
R 运行:正在运行或在队列中等待
S 中断:休眠中,在等待某个条件形成或接受到信号。
D 不可中断:收到信号不唤醒或不可运行,进程必须等待直到有中断发生
Z 僵死:进程已终止,但进程描述符还存在,直到父进程调用wait4()后释放
T 停止:进程收到 SIGSTOP SIGSTP SIGTIN SIGTOU信号后停止运行
ps 命令用于查看系统中的进程状态,格式为 ps [参数]
查看进程与状态: ps -aux
查看特定进程信息: ps -aux|grep 进程名
参数
a 显示所有进程(包括其他用户的)
x 显示没有控制终端的进程
u 显示用户及其他详细信息
top 命令用于监视进程活动与系统负载 格式 top
top命令可以看做是强化版的windows任务管理器,执行效果如下
用于查询 某个特定程序的pid值,格式:pidof[参数][程序名称]
用于终止特定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 [参数][进程名称]
在终端中正在运行某个命令,可以通过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
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
用于远程管理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
使用密码验证终归存在这被暴力破解和嗅探监听的危险,可以使用秘钥验证
第一步:本地主机生成秘钥对,并将公钥传至远程主机中
[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 ~]#
如果像传输文件到其他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协议
使用终端连接服务器进行业务操作时会遇到一个问题,当终端被关闭时,终端中运行的任务也会中断,比如文件传输过程中如果终端关闭那么文件传输也就中断了,必须重新建立连接并传输。Screen专门为解决上述问题设计。用户可以使用screen命令同时控制多个命令行会话,自有切换,也可以进行一下操作:
会话恢复:即便网络中断,也可以随时恢复会话
多窗口:每个会话都是独立运行,拥有独立的窗口编号,输入输出和缓存
会话共享:可以多个用户从不同终端使用同一个会话,也可以让他们看到相同的输出。
后续用到再做总结,暂时跳过