linux学习之进程、服务、日志管理及文件传输

进程管理
进程查看
什么是进程
系统程序运行的过程;系统的占用,文件的调用;
进程状态
R:表示进程正在运行;
S:表示进程处于睡眠状态,该状态下可以被signal唤醒;
D:表示进程处于睡眠状态,但不可被唤醒;
T:表示进程处于停止状态;
Z:表示进程处于僵尸态,进程已经终止但是却无法被移出内存;
查看进程
ps默认只是输出与shell相关的进程
ps a:shell的进程,还包括shell环境;
ps -a:所有与shell相关的进程,所有的shell都会显示,但不包含shell进程本身;
linux学习之进程、服务、日志管理及文件传输
ps -A:系统的所有进程
linux学习之进程、服务、日志管理及文件传输
ps x:系统的所有进程
linux学习之进程、服务、日志管理及文件传输

ps -al:详细信息
linux学习之进程、服务、日志管理及文件传输
ps -f:进程的从属关系
linux学习之进程、服务、日志管理及文件传输
ps -u:显示用户信息
linux学习之进程、服务、日志管理及文件传输
ps -l:较详细的列出PID信息
linux学习之进程、服务、日志管理及文件传输
进程信息的显示:可以制定ps命令输出哪些信息
linux学习之进程、服务、日志管理及文件传输
ps -ax %cpu,comm –sort=%cpu
linux学习之进程、服务、日志管理及文件传输
ps -ax %cpu,comm –sort=%cpu
linux学习之进程、服务、日志管理及文件传输

status显示信息:s表示是*进程,l表示有锁定空间,+表示正在运行
如果*进程的优先级改变则其下所有的优先级都会改变
linux学习之进程、服务、日志管理及文件传输

nice:以指定的优先级运行
linux学习之进程、服务、日志管理及文件传输
renice:修改进程优先级
优先级范围-20到+19,负数表示优先级高
linux学习之进程、服务、日志管理及文件传输

练习:输出CPU利用率最高的5个进程的pid
ps ax -o pid –sort=-%cpu | head -n 6| tail -n 5
linux学习之进程、服务、日志管理及文件传输

top:动态系统进程监控,默认是3秒的周期
linux学习之进程、服务、日志管理及文件传输

工作管理
首先来看一种情况,当我们在执行gedit时我们就无法在当前shell中执行其他命令,那么怎么可以让shell在gedit时可以继续执行其他命令呢?
linux学习之进程、服务、日志管理及文件传输

后台运行
命令执行后可通过Ctrl+Z将命令在后台暂停,此时在gedit中是无法输入信息的
linux学习之进程、服务、日志管理及文件传输
在执行命令时在后面添加&可以将命令直接在后台运行
linux学习之进程、服务、日志管理及文件传输
可通过jobs命令查看进程后台工作状态:
-l:列出后台进程的状态/PID/命令,其中中括号中的数字表示jobnumber
-r:列出处于运行状态的进程;
-s:列出处于暂停状态的进程;
linux学习之进程、服务、日志管理及文件传输

通过执行fg %jobnumber可将后台运行的进程放到前台运行
linux学习之进程、服务、日志管理及文件传输
gedit处于暂停状态,通过执行bg %jobnumber可将gedit由暂停态变为运行态,此时就可以在gedit中输入信息
linux学习之进程、服务、日志管理及文件传输

而进程之间是通过信号来告诉对方要做什么,信号用数字表示,常用的信号主要有
1:在程序不重启的情况下重新加载配置信息,并不是所有的进程都支持不重起的情况下重新加载配置
2:清除指定程序在内存中的数据;
3:清除鼠标在内存中的数据,比较常见的是在使用视频播放器时鼠标会自动隐藏;
9:强行结束某个进程,不会被中断;
15:正常结束某个进程,如果进程已经出现问题则无法使用其来终止进程
19:暂停某个进程,不会被阻塞;
20:暂停某个进程,可能会被阻塞;
18:继续运行暂停的进程;
可使用kill -signal PID来对进程进程操作:
linux学习之进程、服务、日志管理及文件传输

killall 命令名称:根据命令名称来给与信号
linux学习之进程、服务、日志管理及文件传输

服务查看
1.systemd
系统初始化程序,系统开始的第一个进程,pid为1

2.systemctl 命令
systemctl list-units ##列出当前系统服务的状态
linux学习之进程、服务、日志管理及文件传输
systemctl list-unit-files ##列出服务的开机状态
Static表示不确定开机启动状态,enable表示开机启动,disable表示开机不启动
linux学习之进程、服务、日志管理及文件传输
systemctl status servename ##查看指定服务的状态,servename表示服务名称
linux学习之进程、服务、日志管理及文件传输
systemctl stop sshd ##关闭指定服务
linux学习之进程、服务、日志管理及文件传输
systemctl start sshd ##开启指定服务
linux学习之进程、服务、日志管理及文件传输
systemctl restart sshd ##从新启动服务
systemctl reload sshd ##使指定服务从新加载配置
linux学习之进程、服务、日志管理及文件传输
systemctl enable sshd ##设定指定服务开机开启
systemctl disable sshd ##设定指定服务开机关闭
systemctl list-dependencies sshd ##查看指定服务的倚赖关系
systemctl mask sshd ##冻结指定服务
systemctl unmask sshd ##启用服务
systemctl set-default multi-user.target ##开机不开启图形
systemctl set-default graphical.target ##开机启动图形
setterm ##文本界面设定color
vga=ask
3.服务状态
状态查询方法:systemctl status 服务名称
服务状态主要有以下几种:
loaded :系统服务已经初始化完成,加载过配置
active(running):正有一个或多个程序正在系统中执行
atcive(exited):仅执行一次就正常结束的服务
atcive(waiting):正在执行中, 需要等待其他事件才能继续处理
inactive:服务关闭
enbaled:服务开机启动
disabled:服务开机不自启
static:服务开机启动项不可被管理
failed:系统配置错误

sshd服务
Sshd提供远程连接服务。那么如何使用ssh服务呢?
首先需要查看服务器端的ssh服务是否开启:在服务器端执行systemctl status sshd.service
linux学习之进程、服务、日志管理及文件传输
在确认ssh服务开启后可尝试连接服务器ssh [email protected]:其中username指的是被登陆的服务器上的用户名,IP为服务器的IP地址,这里需要注意的是输入的密码是服务器上usename的密码并不是本机的。登陆成功后可以看到主机名由client改变为server
linux学习之进程、服务、日志管理及文件传输

查看sshd服务是否开启:
-x:可以调用图形,不能调用图形界面时如何解决:需要在服务器上切换成root用户并执行xhost +命令。

如上用户在登陆服务器时需要root密码,这对于系统的管理是不安全的。可以考虑使用KEY认证的方式进行授权登陆(如下的操作是在服务器端执行)。
第一步:生成公钥私钥;
执行ssh-******,生成的文件在/root/.ssh目录下
linux学习之进程、服务、日志管理及文件传输
第二步:使用公钥给用户上锁
ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected](172.25.27.11是本机的IP),表示给本机上的root用户上锁;
linux学习之进程、服务、日志管理及文件传输
第三步:将私钥发送给用户
切换到/root/.ssh目录下,将私钥发送给客户端上的用户
scp id_rsa [email protected]:/root/.ssh/(root表示客户端上的帐号,172.25.27.10表示客户端的IP,/root/.ssh表示将**存放的位置)
linux学习之进程、服务、日志管理及文件传输
linux学习之进程、服务、日志管理及文件传输
第四步:用户可以在客户端登陆(不需要密码)
linux学习之进程、服务、日志管理及文件传输

为了系统安全可以考虑关闭默认的密码登陆方式,而只采用KEY认证登陆:
第一步:修改/etc/ssh/sshd_config第78行由PasswordAuthentication由yes改为no
linux学习之进程、服务、日志管理及文件传输
第二步:重起sshd,没有KEY授权的将不能登陆
linux学习之进程、服务、日志管理及文件传输

另外还可以更加个性化定制登陆权限:
1/不让root用户连接;
/etc/ssh/sshd_config:PermitRootLogin no
2/不让普通用户连接;
/etc/ssh/sshd_config:Denyusers xxxxx
3/只让部分用户连接;
/etc/ssh/sshd_config:Allowusers xxxxx—-一旦设置之后就只有该列表中的用户才能登陆
linux学习之进程、服务、日志管理及文件传输

文件传输
scp
网络文件的表示方法:
[email protected]:/mnt/filenme
username表示账户名称,172.25.27.10表示IP地址,/mnt/filename表示文件的绝对路径
举例:
1/将文件/目录从服务器端拷贝给客户端
scp /test/file1 [email protected]:/mnt
表示在服务器端执行该命令将/test/file1文件拷贝到客户端172.25.27.10的/mnt目录下,且客户端的身份位root
linux学习之进程、服务、日志管理及文件传输
2/用户在客户端从服务器端拷贝文件/目录
scp -r [email protected]:/test /mnt
表示在客户端上执行命令从服务器端172.25.27.11上拷贝/test目录到客户端的/mnt目录下
linux学习之进程、服务、日志管理及文件传输

rsync
添加/和不添加/的区别:若源目录后面不添加/表示复制目录本身以及目录下的文件,若添加/表示复制目录下的文件
linux学习之进程、服务、日志管理及文件传输
linux学习之进程、服务、日志管理及文件传输

-l:添加-l后表示不忽略链接文件
linux学习之进程、服务、日志管理及文件传输

-D:表示不忽略设备文件
linux学习之进程、服务、日志管理及文件传输
-o:不忽略所有者
-g:不忽略群组
如上源目录下的文件所有者和群组都是student,但复制后所有者和群组都改为root,通过-o和-g可以不忽略所有者和群组
linux学习之进程、服务、日志管理及文件传输
-p:表示不忽略权限
如上源文件的权限为777,复制之后修改位755,通过-p可以不忽略权限
linux学习之进程、服务、日志管理及文件传输
-t:如上复制过程中发现复制后的时间和源文件的时间不一致,可通过-t不忽略时间
linux学习之进程、服务、日志管理及文件传输

打包/压缩
打包tar
-c:表示创建打包文件
-f:表示后面要接打包文件的名字
linux学习之进程、服务、日志管理及文件传输
-r:往打包文件中追加文件
linux学习之进程、服务、日志管理及文件传输
–get:从打包文件中的获取文件
linux学习之进程、服务、日志管理及文件传输
–delete:删除打包文件中的文件
linux学习之进程、服务、日志管理及文件传输

日志管理
日志的采集由rsyslog.service服务完成,注意只是采集不是生成。不同的日志设备以及不同的日志级别的日志记录的位置不同,由/etc/rsyslog.conf来配置。如下图选中行由两部分组成,左边第一部分以“;”隔开表示不同设备的不同级别,“.”之前是日志设备,“.”之后是日志级别,第二部分表示日志存放的位置
linux学习之进程、服务、日志管理及文件传输
常见的日志设备
auth:pam产成的日志;
authpriv:常用服务登陆的验证信息
cron:时间任务
kern:内核
lpr:打印
mail:邮件
mark(syslog)-rsyslog:服务内部信息,时间标识
news:新闻
user:用户程序产生的信息
uucp:unix主机之间相关的通讯
local 1~7:自定义的日志设备
日志级别
Debug:输出的日志信息最多,含有调试相关信息
Info:一般信息的日志,该级别最常用
Notice:
Warning:警告级别;
Err:错误级别,阻止某个功能或模块不能正常工作的信息;
Crit:严重级别,阻止整个系统或模块不能正常工作的信息;

下面来看下日志文件记录的内容
linux学习之进程、服务、日志管理及文件传输
可以修改日志文件的记录形式:
linux学习之进程、服务、日志管理及文件传输
linux学习之进程、服务、日志管理及文件传输

在管理多个客户端时可以将这些客户端的日志指向到服务器端,配置方法如下:
第一步:客户端配置服务器地址,并重起rsyslog服务
linux学习之进程、服务、日志管理及文件传输
第二步:服务器端配置接收端口
linux学习之进程、服务、日志管理及文件传输
第三步:关闭防火墙(服务器端)
linux学习之进程、服务、日志管理及文件传输
第四步:配置完成,客户端的日志会记录到服务器端的/var/log/messages
linux学习之进程、服务、日志管理及文件传输

systemd-journald服务
systemd-journald服务用于实时采集系统日志,通过journalctl命令可查看日志
linux学习之进程、服务、日志管理及文件传输
显示最近的10条日志
linux学习之进程、服务、日志管理及文件传输

查看系统报错
linux学习之进程、服务、日志管理及文件传输
查询某个时间段的日志
linux学习之进程、服务、日志管理及文件传输
查看日志能够使用的条件参数
linux学习之进程、服务、日志管理及文件传输

默认情况下,systemd日志保存在/run/log/journal/目录下,但一旦系统关机或重启该内容就会被清空。可以尝试将日志保存在/var/log/journal/目录下,这样系统重启后仍然能狗看到之前的日志,配置方法如下:
第一步:创建/var/log/journal目录
mkdir /var/log/journal
第二步:更改目录的所有者和群组
chown root:systemd-journal /var/log/journal/
第三步:添加SGID权限
chmod 2755 /var/log/journal/
第四步:重启服务
killall -1 systemd-journald
linux学习之进程、服务、日志管理及文件传输

chrony时间同步
第一步:客户端配置时间同步服务器的地址,并重启chrony服务
linux学习之进程、服务、日志管理及文件传输
第二步:服务器端配置允许同步的客户端地址,并重启chrony服务
linux学习之进程、服务、日志管理及文件传输
linux学习之进程、服务、日志管理及文件传输
第三步:服务器端关闭selinux

linux学习之进程、服务、日志管理及文件传输
第四步:客户端检查是否配置成功
linux学习之进程、服务、日志管理及文件传输

timedatectl系统时间设置

timedatectl可查询系统当前的时间以及所使用的时区,lisst-timezones会列出系统支持的所有时区
linux学习之进程、服务、日志管理及文件传输
中国使用的时区为“Asia/Shanghai”,通过set-timezone可设置系统时区
linux学习之进程、服务、日志管理及文件传输
修改配置文件/etc/adjtime可修改系统时间同步方式:UTC/LOCAL
linux学习之进程、服务、日志管理及文件传输