104、用户操作 、su和shdo、普通权限、特殊权限、解压压缩、软件管理、rpm和yum、源码安装nginx、系统服务 、进程管理

2023年 8月 17日 60.9k 0

今日内容概要

  • 用户操作
  • su和shdo
  • 普通权限
  • 特殊权限
  • 解压压缩
  • 软件管理、rpm和yum
  • 源码安装nginx
  • 系统服务
  • 进程管理

今日内容详细

用户操作

使用useradd命令,注意: adduser命令软链接指向useradd命令

选项
# -u 指定要创建用户的UID,不允许冲突
# -g 指定要创建用户默认组
# -G 指定要创建用户附加组,逗号隔开可添加多个附加组
# -d 指定要创建用户家目录
# -s 指定要创建用户的bash shell  /bin/bash   /sbin/nologin
# -c 指定要创建用户注释信息
# -M 给创建的用户不创建家目录
# -r 创建系统账户,默认无家目录
1.创建sa和sutdents组
	[root@localhost ~]# groupadd sa
  [root@localhost ~]# groupadd students

2.需求:创建bgx用户,UID5001,基本组students,附加组sa 注释信息:2019 new student,登陆shell:/bin/bash
  useradd -u 5001 -g students -G sa -c "2019 new student" -s /bin/bash bgx
  
3.需求:创建mysql系统用户,-M不建立用户家目录 -s指定nologin使其用户无法登陆系统
  useradd mysql -M /sbin/nologin  # 运行进程 某个用户运行的
  useradd -r dba -s /sbin/nologin
  
4.SELinux
	getenforce # 查看

设置密码

passwd bgx

修改用户信息

使用usermod命令修改用户信息

选项
# -u 指定要修改用户的UID
# -g 指定要修改用户基本组
# -G 指定要修改用户附加组,使用逗号隔开多个附加组, 覆盖原有的附加组,-aG追加
# -d 指定要修改用户家目录 -md 旧家搬新家
# -s 指定要修改用户的bash shell
# -c 指定要修改用户注释信息
# -l 指定要修改用户的登陆名
# -L 指定要锁定的用户
# -U 指定要解锁的用户

1.检查此前创建的用户信息
[root@bgx ~]# grep "bgx" /etc/passwd
bgx:x:5001:503:2019 new student:/home/bgx:/bin/bash

2.修改bgx用户uid、gid,附加组  -a表示追加
[root@bgx ~]# groupadd -g 5008 network_sa
[root@bgx ~]# groupadd -g 5009 devops
[root@bgx ~]# usermod -u 6001 -g5008 -a -G 5009 bgx

3.修改bgx用户的注释信息, 用户家目录, 登录shell, 登录名 -l:改名字,-md,把环境也带过去
[root@bgx ~]# usermod -c "2019 new student" -md /bgx -s /bin/sh -l change_bgx bgx

4.检查是否修改成功
[root@bgx ~]# grep "bgx" /etc/passwd
bgx_lqz:x:6001:5008:2019 new student:/bgx:/bin/sh
[root@bgx ~]# id change_bgx
uid=6001(change_bgx) gid=5008(network_sa) groups=5008(network_sa),503(sa),5009(devops)
[root@bgx ~]# ll -d /bgx
drwx------. 2 bgx_lqz network_sa 4096 2014-09-23 00:13 /bgx

5.锁定用户[扩展]
[root@bgx ~]# echo "123" |passwd --stdin change_bgx
[root@bgx ~]# usermod -L change_bgx  #锁定后会无法登陆系统

6.解锁用户[扩展]
[root@bgx ~]# usermod -U change_bgx

删除账户

选项 -r 删除用户同时删除它的家目录

1.删除user1用户,但不删除用户家目录和 mail spool
[root@bgx ~]# userdel user1
[root@bgx ~]# ls /var/spool/mail/

2.-r参数可以连同用户家目录一起删除(慎用)
[root@bgx ~]# userdel -r user1

groupmod修改组

锁定用户:usermod -L 用户名
解锁用户:usermod -U 用户名

su和sudo

		往往公司的服务器对外都是禁止root用户直接登录,所以我们通常使用的都是普通用户,那么问题来了?
		当我们使用普通用户执行/sbin目录下的命令时,会发现没有权限运行,这种情况下我们无法正常的管理服务器,那如何才能不使用root用户直接登录系统,同时又保证普通用户能完成日常工作?
    
PS: 我们可以使用如下两种方式: su、sudo
	1.su切换用户,使用普通用户登录,然后使用su命令切换到root。优点:简单 缺点:需要知道root密码
	2.sudo提权,当需要使用root权限时进行提权,而无需切换至root用户,优点:安全、方便 缺点:复杂

su身份切换

		在使用su切换前,我们需要了解一些预备知识,比如shell分类、环境变量配置文件有哪些

1.Linux Shell主要分为如下几类
		交互式shell,等待用户输入执行的命令(终端操作,需要不断提示)
		非交互式shell,执行shell脚本, 脚本执行结束后shell自动退出
		登陆shell,需要输入用户名和密码才能进入Shell,日常接触的最多的一种
		非登陆shell,不需要输入用户和密码就能进入Shell,比如运行bash会开启一个新的会话窗口

2.bash shell配置文件介绍(文件主要保存用户的工作环境)
		个人配置文件:~/.bash_profile ~/.bashrc 。
		全局配置文件:/etc/profile /etc/profile.d/*.sh /etc/bashrc
		profile类文件, 设定环境变量, 登陆前运行的脚本和命令。bashrc 类文件, 设定本地变量, 定义命令别名
		PS: 如果全局配置和个人配置产生冲突,以个人配置为准。

3.登陆系统后,环境变量配置文件的应用顺序是?
		登录式shell配置文件执行顺序: /etc/profile->/etc/profile.d/.sh->/.bash_profile->/.bashrc->/etc/bashrc
		非登陆式shell配置文件执行顺序: ~/.bashrc->/etc/bashrc->/etc/profile.d/.sh
PS: 验证使用echo在每行添加一个输出即可

4.说了这么多预备知识,那这些和su命令切换用户有什么关系?
	su - username属于登陆式shell,su username属于非登陆式		shell,区别在于加载的环境变量不一样。
	su username 属于非登陆式shell

普通用户su -可以直接切换至root用户,但需要输入root用户的密码。超级管理员root用户使用su - username切换普通用户不需要输入任何密码。

1.普通用户使用su切换root
[nana@node1 ~]$ su 
密码:         #输入root的密码
[root@node1 nana]# pwd
/home/nana

2.普通用户使用su -切换到root,会加载root的环境变量
[lqz@node1 ~]$ su -
密码:
[root@node1 ~]# pwd
/root

3.以某个用户的身份执行某个服务,使用命令su -c username
[root@bgx ~]# su - nana -c 'ifconfig'
[root@bgx ~]# su - nana -c 'ls ~'

4.其他
yum provides pstree
yum install psmisc
pstree

5.关闭root远程登陆,普通用户登进来,su - 切换到root用户
vim /etc/ssh/sshd_config
PermitRootLogin yes  # 设成no

6.加载当前用户的环境变量
	su - username  # 加载当前用户的环境变量
  [root@localhost ~]# su - cx
上一次登录:四 7月 27 03:32:54 CST 2023pts/0 上

7.环境变量加载顺序
	/etc/profile->/家路径.bash_profile->家路径/.bashrc->/etc/bashrc

sudo提权--->能不能干取决于有没有被授予

su命令在切换用户身份时,如果每个普通用户都能拿到root用户的密码,当其中某个用户不小心泄漏了root的密码,那系统会变得非常不安全。为了改进这个问题,从而产生了sudo这个命令。

其实sudo就相当于给某个普通用户埋下了浩克(hulk)的种子,当需要执行一些高级操作时,进行发怒,但正常情况下还是普通人,还是会受到限制

1.普通用户不能创建用户
	就是普通用户,就想创建--->问管理员要root密码-->su 成 root--->可以创建了--->完事切回来
	我就是普通用户,管理员授予我创建用户权限 
    sudo useradd lqz  
    输入密码:普通用户的密码

1.如何快速埋下hulk的种子呢?

1.快速配置sudo方式[先睹为快]
[root@node1 ~]# usermod bgx -G wheel # 把用户加到wheel组中
[root@node1 ~]$ sudo tail -f /var/log/secure    #sudo审计日志
"""
wheel组,这个组是root 用户的组,有很多权限
wheel组的成员,跟root是一种权限,跟root用户一样,有一些权限
	-删除文件,创建文件夹...
"""

2.一般正常配置sudo方式
[root@www ~]# #visudo => vim /etc/sudoers
#1.用户名  2.主机名=(角色名)       4.命令名
bgx       ALL=(ALL)         /usr/bin/yum,/usr/sbin/useradd   #允许使用sudo执行命令
oldboy   ALL=(ALL)          NOPASSWD:/bin/cp, /bin/rm   #NOPASSWD不需要使用密码

visudo -c # 检查刚刚编辑的是否有错误
sudo -l  # 对主机有哪些权限

2.埋下了hulk种子后又如何提权使用呢?

1.切换普通用户
[root@bgx ~]# su - lqz

2.检查普通用户能提权的命令
[lqz@lqz ~]$ sudo -l
User lqz may run the following commands on this host:
    (ALL) ALL

3.普通用户正常情况下是无法删除opt目录的
[lqz@lqz ~]$ rm -rf /opt/
rm: cannot remove `/opt: Permission denied

4.使用sudo提权,需要输入普通用户的密码。
[lqz@lqz ~]$ sudo rm -rf /opt

sudo命令的执行流程

1.普通用户执行sudo命令时, 会检查/var/db/sudo是否存在时间戳缓存
2.如果存在则不需要输入密码, 否则需要输入用户与密码
3.输入密码会检测是否该用户是否拥有该权限
4.如果有则执行,否则报错退出

文件的权限

1.权限与用户之间的关系?
  在Linux系统中,针对文件定义了三种身份,分别是属主(owner)、属组(group)、其他人(others),每一种身份又对应三种权限,分别是可读(readable)、可写(writable)、可执行(excutable)。
  
2.针对文件定义了三种身份,
  1.属主(owner):文件属于哪个用户
  2.属组(group):文件是属于哪个用户用户组的
  3.其他人(others):其他人
  
3.三种权限,分别是可读(readable)、可写(writable)、可执行(excutable)
  rw-                       r--                        r--
  当前用户有读写权限         同一个组有读权限             其他人有读权限
  d   rwx                  ---                          ---
  
4.权限中的rwx分别代表什么含义?
	当我们使用ls -l查看一个文件的详细属性时,能看到每个文件都有一个9位基本权限位,比如: rwxr-xr-x其中每三位字符为一组,分别表示属主权限位,属组权限位,匿名权限位。
linux中基本权限位则是使用这9位字符来表示,主要控制文件属主(User)、属组(Group)、其他用户(Other)
字母 含义 对应权限
r(read) 读取权限 4
w(write) 写入权限 2
x(execute) 执行权限 1
-(没有权限) 没有权限 0
权限 对文件的影响 对目录的影响
读取权限(r) 具有读取阅读文件内容权限 具有浏览目录及子目录
写入权限(w) 具有新增、修改文件内容的权限 具有增加和删除目录内文件
执行权限(x) 具有执行文件的权限 具有访问目录的内容(取决于目录中文件权限)

授予文件权限

1.方式一:
	chmod u=rwx,g=rwx,o=rwx lqz.txt  
2.方式二:
	r:4
  w:2
  x:1
  ps: 110  rw-  6
  
  chmod 777 cx.txt
  chmod 077 cx.txt
  chomd   +x  xx.sh  # 对该文件加执行权限(自己,组,其他人都有) 

总结rwx对文件的影响

1.读取权限(r)具有读取阅读文件内容权限
	1.只能使用查看类命令cat、head、tail、less、more

2.写入权限(w)具有新增、修改文件内容的权限
  1.使用vim编辑会提示权限拒绝, 但可强制保存,会覆盖文件的所有内容
  2.使用echo命令重定向的方式可以往文件内写入数据,>>可以进行追加
  3.不能删除文件,因为删除文件看的不是文件的属性,需要看上级目录是否有w的权限
  
3.执行权限(x)具有执行文件的权限
  1.执行权限什么用都没有
  2.如果普通用户需要执行文件,需要配合r权限

特殊权限

特殊权限SUID

1.问题抛出
  在 Linux 系统中,每个普通用户都可以更改自己的密码,这是合理的设置。问题是,普通用户的信息保存在 /etc/passwd 文件中,用户的密码在 /etc/shadow 文件中,也就是说,普通用户在更改自己的密码时修改了 /etc/shadow 文件中的加密密码,但是文件权限显示,普通用户对这两个文件其实都是没有写权限的,那为什么普通用户可以修改自己的权限呢?……(难道学了个假的权限)
  [root@localhost nana]#  ll /etc/passwd
  -rw-r--r--. 1 root root 5240 Jul 27 03:15 /etc/passwd
  [root@localhost nana]# ll /etc/shadow
  ----------. 1 root root 3740 Jul 27 03:40 /etc/shadow
  
2.解决方案
  其实,普通用户可以修改自己的密码在于 passwd 命令。该命令拥有特殊权限 SetUID,也就是在属主的权限位的执行权限上是 s。可以这样来理解它:当一个具有执行权限的文件设置 SetUID 权限后,用户在执行这个文件时将以文件所有者的身份来执行。

  PS: 当普通用户使用 passwd 命令更改自己的密码时,实际上是在用 passwd 命令所有者 root 的身份在执行 passwd 命令,root 当然可以将密码写入 /etc/shadow 文件,所以普通用户也可以修改 /etc/shadow 文件,命令执行完成后,该身份也随之消失。
 
3.举个例子,有一个用户 cx,她可以修改自己的权限,因为 passwd 命令拥有 SetUID 权限;但是她不能査看 /etc/shadow 文件的内容,因为査看文件的命令(如 cat)没有 SetUID 权限。
  [cx@localhost nana]$ passwd
  [cx@localhost nana]$ cat /etc/shadow
  cat: /etc/shadow: Permission denied

权限属性chattr

chatrr 只有 root 用户可以使用,用来修改文件系统的权限属性,建立凌驾于 rwx 基础权限之上的授权。chatrr 命令格式:[root@bgx ~]# chattr [+-=] [选项] 文件或目录名

选项: 
  + 增加权限 -减少权限 =等于某个权限
	a:让文件或目录仅可追加内容
	i:不得任意更动文件或目录

1.创建文件并设置属性
  [root@localhost nana]# chattr +a a1
  [root@localhost nana]# chattr +i a2
  [root@localhost nana]# lsattr a1 a2
  -----a---------- a1
  ----i----------- a2

2.使用chattr设置属性,lsattr查看权限限制
  [root@lqz ~]# chattr +a file_a
  [root@lqz ~]# chattr +i file_i
  [root@lqz ~]# lsattr file_a file_i
  -----a---------- file_a
  ----i----------- file_i

3.a权限,无法写入和删除文件,但可以追加数据,适合/etc/passwd这样的文件
  [root@localhost nana]# echo "aa" > a1
  bash: a1: Operation not permitted
  [root@localhost nana]# rm -f a1
  rm: cannot remove ‘a1’: Operation not permitted
  [root@localhost nana]# echo "aa" >> a1
  [root@localhost nana]# vim a1

4.i权限, 无法写入,无法删除,适合不需要更改的重要文件加锁
  [root@localhost nana]# echo "i" > a2
  bash: a2: Operation not permitted
  [root@localhost nana]# echo "i" >> a2
  bash: a2: Operation not permitted
  [root@localhost nana]# rm -f a2
  rm: cannot remove ‘a2’: Operation not permitted

5.解除限制
  [root@localhost nana]# chattr -a a1
  [root@localhost nana]# chattr -i a2

6.电脑中毒了,一切皆文件--->查看哪个进程占cpu,内存高,定位到那个可执行文件--->删除可执行文件即可
    -删没有权限
    -chattr -i 文件

解压压缩

在windows系统下,我们接触最多的压缩格式是 rar 或 zip ,但在Linux上使用最多的压缩格式是 zip 和 tar.gz 。当然不用担心,Linux上的压缩格式放在windows系统下都是可以正常打开的。(Linux不支持 Windows下的 RAR 格式的压缩文件。Windows和Linux互通通常选择 zip)

Linux下压缩包有哪些常见的类型

格式 压缩工具
.zip zip压缩工具
.gz gzip压缩工具,只能压缩文件,会删除原文件(通常配合tar使用)
.bz2 bzip2压缩工具,只能压缩文件,会删除原文件(通常配合tar使用)
.tar.gz 先使用tar命令归档打包,然后使用gzip压缩
.tar.bz2 先使用tar命令归档打包,然后使用bzip压缩

gzip打包与压缩

使用gzip方式进行压缩文件

1.仅对文件有效,对文件夹无效,压缩有文件删除,解压后压缩包删除
2.安装:yum install gzip -y
3.压缩:gzip 文件名
4.解压:gzip -d file.gz
5.实际用途:做备份
  gzip *     把当前路径下所有文件都压成 gz
  gzip -d *  解压当前路径下所有gz文件
  
6.案例
[root@localhost nana]# touch a.txt
[root@localhost nana]# ls
a.txt  
[root@localhost nana]# gzip a.txt #对文件进行压缩
[root@localhost nana]# ls
a.txt.gz
[root@localhost nana]# zcat a.txt.gz #查看gz压缩后的文件
[root@localhost nana]# gzip -d a.txt.gz #解压gzip的压缩包
[root@localhost nana]# ls
a.txt  

7.使用场景:当需要让某个文件不生效时,快速关闭和启用配置文件
[root@lqz ~]# cd /etc/yum.repos.d/
[root@lqz ~]# gzip *
[root@lqz ~]# gzip CentOS-Vault.repo --> CentOS-Vault.repo.gz
[root@lqz ~]# zcat CentOS-Vault.repo.gz   --> 查看不想解压的压缩包文件内容

zip打包与压缩

使用zip命令可以对文件进行压缩打包,解压则需要使用unzip命令

1.安装:yum install zip unzip -y
2.压缩:zip  filename.zip  xx.txt
3.压缩:包括目录和文件:zip  -r filename1.zip  xx.txt a.txt  /etc/hosts
4.查看压缩包中有哪些文件:unzip -t  filename1.zip
5.解压:unzip  filename.zip
6.解压到指定目录下:unzip  filename.zip -d /opt/

7.案例
  1.压缩文件为zip包
    # zip 压缩表名 压缩的文件
    [root@lqz ~]# zip  filename.zip  filename 
  2.打包不同目录下的不同文件
    [root@lqz ~]# zip  filename1.zip  file1 file2 /etc/hosts 

  3.压缩目录为zip包 (不加r,只会打包一个文件夹)
  [root@lqz ~]# zip -r  dir.zip dir/

  4.查看zip压缩包是否是完整的         
  [root@lqz ~]# zip -T  filename.zip
  test of filename.zip OK

  5.不解压压缩查看压缩包中的内容
  [root@lqz ~]# unzip -l  filename.zip
  [root@lqz ~]# unzip -t  filename.zip

  6.解压zip文件包, 默认解压至当前目录          
  [root@lqz ~]# unzip  filename.zip

  7.解压zip内容至/opt目录
  [root@lqz ~]# unzip filename.zip  -d /opt/

tar打包与压缩

tar是linux下最常用的压缩与解压缩, 支持文件和目录的压缩归档

1.语法:tar [-zjxcvfpP] filename 
  c   #创建新的归档文件
  x   #对归档文件解包
  t   #列出归档文件里的文件列表
  v   #输出命令的归档或解包的过程
  f   #指定包文件名,多参数f写最后

  z   #使用gzip压缩归档后的文件(.tar.gz)
  j   #使用bzip2压缩归档后的文件(.tar.bz2)
  J   #使用xz压缩归档后的文件(tar.xz)
  C   #指定解压目录位置
  X   #排除多个文件(写入需要排除的文件名称)
  h   #打包软链接
  --hard-dereference  #打包硬链接
  --exclude   #在打包的时候写入需要排除文件或目录


2.常用打包与压缩组合
  czf     #打包tar.gz格式 常用
  cjf     #打包tar.bz格式 不怎么用
  cJf     #打包tar.xz格式 不考虑

  zxf     #解压tar.gz格式
  jxf     #解压tar.bz格式
  xf      #自动选择解压模式
  xvf     #显示解压过程
  tf      #查看压缩包内容

1.将文件或目录进行打包压缩

#1.以gzip归档方式打包并压缩
tar czf  test.tar.gz  test/ test2/

#2.以bz2方式压缩 
tar cjf  test.tar.bz2 dir.txt dir/

#3.打包链接文件,打包链接文件的真实文件
[root@lqz ~]# cd /
[root@lqz /]# tar czfh local.tar.gz  etc/rc.local

#4.打包/tmp下所有文件
[root@lqz ~]# cd /
[root@lqz /]# find tmp/ -type f | xargs tar czf tmp.tar.gz

#5.打包/tmp下所有文件
[root@lqz /]# tar czf tmp.tar.gz $(find /tmp/ -type f)

2.排除文件, 并打包压缩

#1.排除单个文件
[root@lqz /]#  tar czf etc.tar.gz --exclude=etc/services etc/

#2.排除多个文件
[root@lqz /]# tar czf etc.tar.gz --exclude=etc/services --exclude=etc/rc.local etc/

#3.将需要排除的文件写入文件中
[root@lqz /]# cat paichu.list
etc/services
etc/rc.local
etc/rc.d/rc.local
#指定需要排除的文件列表, 最后进行打包压缩
[root@lqz /]# tar czfX etc.tar.gz paichu.list etc/

3.查看压缩文件

#查看压缩包内容和解压
[root@lqz /]# tar tf  test.tar.gz

4.解压缩文件

#1.解压至当前目录
[root@lqz /]# tar xf  test.tar.gz  

#2.将解压内容存储至指定的/tmp目录
[root@student ~]# tar xf /etc/local.tar.gz  -C /tmp

tar命令练习

1.环境准备
[root@lqz ~]# yum install mariadb-server
[root@lqz ~]# systemctl start mariadb
[root@lqz ~]# mkdir /backup

2.案例1.mysql备份及恢复
[root@lqz ~]# tar cJf /backup/mysql.tar.xz /var/lib/mysql
[root@lqz ~]# tar xf /backup/mysql.tar.xz -C /

3.案例2 mysql备份及恢复
[root@lqz ~]# cd /var/lib/mysql
[root@lqz mysql]# tar cJf /backup/mysql.tar.xz 
[root@lqz mysql]# tar tf /backup/mysql.tar.xz
[root@lqz mysql]# tar xf /backup/mysql.tar.xz -C /var/lib/mysql

记住

1.压缩:只记这一条即可
	tar czf  test.tar.gz a.txt  ./etc xx.txt
2.解压:
	tar -xf test.tar.gz
	tar -xvf test.tar.gz
3.查看压缩包内容
	tar tf  test.tar.gz

软件管理,rpm和yum

RPM

1.RPM全称 RedHat Package Manager 缩写,由红帽开发用于软件包的安装升级卸载与查询
2.rpm包名组成部分
	RPM包命名以-将软件分成了若干部分bash-4.2.46-28.el7.x86_64.rpm
  bash:软件名
  4.2.46-28.el7:4是大版本,2是小版本,46是修订次数,28是发布次数,el7是:enterprise linux 7,使用linux7系统
  x86_64:64位架构

rpm包如何安装

以下列出了rpm命令进行安装软件的常用参数

选项 描述
-i 安装rpm
-v 显示安装详细信息
-h 显示安装rpm进度
–force 强制重新安装
–nodeps 忽略依赖关系
1.把光驱挂在到某个目录下
mount /dev/cdrom /mnt

2.rpm安装软件命令
	rpm -ivh tree-1.6.0-10.el7.x86_64.rpm
  
3.rpm查看软件
	 rpm -q   查看是否安装
   rpm -ql  释放的目录
    
4.rpm卸载软件
    rpm -qa |grep tree  # 从所有安装的软件中过滤一些是否有tree
    rpm -q tree  # 查看tree有没有装
    rpm -e tree  # 卸载tree软件

如何查询已安装好的rpm包

选项 描述
rpm -q 查看指定软件包是否安装(重点)
rpm -qa 查看系统中已安装的所有RPM软件包列表
rpm -qi 查看指定软件的详细信息
rpm -ql 查询指定软件包所安装的目录、文件列表(重点)
rpm -qc 查询指定软件包的配置文件(只有配置文件,etc下的)
rpm -qf 查询文件或目录属于哪个RPM软件
rpm -qip 查询未安装的rpm包详细信息
rpm -qlp 查询未安装的软件包会产生哪些文件
查询vsftpd这个rpm包是否安装
[root@lqz ~]# rpm -q vsftpd

模糊查找系统已安装的rpm包
[root@lqz ~]# rpm -qa |grep ftp

查询vsftpd软件包的相关信息
[root@lqz ~]# rpm -qi vsftpd

查询rpm包所安装的文件
[root@lqz ~]# rpm -ql vsftpd

查询rpm包相关的配置文件
[root@lqz ~]# rpm -qc vsftpd

查询配置文件或命令来自于哪个rpm包(只能查已经安装过的)
[root@lqz ~]# rpm -qf /etc/vsftpd/vsftpd.conf # 查看这个配置文件是
[root@lqz ~]# rpm -qf /usr/sbin/vsftpd
[root@lqz ~]# rpm -qf /usr/sbin/ifconfig 
想看未安装的
yum provides vim

查询未安装的软件包会产生哪些文件
[root@lqz ~]# rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm

查询未安装的软件包会产生哪些文件
[root@lqz ~]# rpm -qip /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm

yum

1.Yum是RedHat以及CentOS中的软件包管理器。能够通过互联网下载 .rpm 包并且安装,并可以自动处理依赖性关系,无须繁琐地一次次下载、安装

2.YUM源
	1.yum install装软件,它去某个位置下,默认是centos提供的,国外,可能会慢一些
  2.国内的阿里云,提供镜像站
    wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
3.epel扩展源
	wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

4.查询软件
    yum list |wc -l # 查看所有可以按装的软件
    yum list|grep ftp
    yum info ftp
    
5.安装软件
  yum install vim -y
  yum install 远程地址rpm包自动处理依赖
  yum reinstall vsftpd # 重新安装
  rpm -qc vsftpd # 查看改软件安装后的一些目录

5.更新软件
	yum update nginx -y
6. 卸载软件
	yum remove 软件名 -y

源码安装nginx

yum安装

yum install nginx  简单,不能使用最新版,不能修改源码

源码安装

源码安装,官方下载最新版,改源码,自己编译--->得到软件
1.wget https://nginx.org/download/nginx-1.24.0.tar.gz
2.tar xf nginx-1.24.0.tar.gz
3.配置相关的选项,并生成Makefile
	./configure --help
  ./configure --prefix=/usr/local/nginx  # 指定安装路径
      yum -y install gcc gcc-c++ make
      yum install -y pcre-devel
      yum -y install zlib-devel
      yum -y install openssl-devel
      
4.make  编译---》把源码编译成可执行文件--->/usr/local/nginx路径下会不会有?
	
    
5.make install   安装

6.cd /usr/local/nginx 可以看到文件夹
conf     html         logs      sbin
配置文件   index.html   日志     可执行文件

7.在任意路径下敲nginx 都能找到
	1.软连接
	2.把sbin路径加入到环境变量
  	cd
    vim .bash_profile
       加入一行:
          PATH=$PATH:$HOME/bin
          PATH=$PATH:/usr/local/nginx/sbin
          export PATH
   3.source 一下,让它生效
   4.source .bash_profile
        
8.以后再任意路径敲nginx,都会有响应
"""
1.停止nginx服务:nginx -s stop
2.启动:nginx
"""

系统服务

1.centos7  systemclt :systemctl管理服务的启动、重启、停止、重载、查看状态等常用命令
2.systemctl restart network  # systemctl启动服务
3.systemctl status network # systemctl查看服务
4.win上:net start 服务名
5.使用 systemctl 管理nginx 
	-如果用yum安装的nginx,自动加入到服务中去,就会被systemctl管理
    -yum install nginx -y
    -systemctl status nginx   # 查看nginx服务
    -systemctl start nginx # 启动nginx服务
    -systemctl stop nginx  # 加载nginx服务
    -systemctl reload nginx  # 重新加载
    
6.把咱们自己使用源码安装的软件也可以被systemctl管理
	1.来到路径下:路径是
		cd /usr/lib/systemd/system/
	2.新建一个 mynginx.service
		vim mynginx.service
      [Unit]
      Description=xxxx
      After=network.target

      [Service]
      Type=forking
      ExecStart=/usr/local/nginx/sbin/nginx
      ExecStop=/usr/local/nginx/sbin/nginx -s stop
      ExecRestart=/usr/local/nginx/sbin/nginx -s restart
      ExecReload=/usr/local/nginx/sbin/nginx -s reload
      [Install]
      WantedBy=multi-user.target

	3.以后,使用systemctl 管理nginx
    -systemctl status mynginx
    -systemctl start mynginx
    -systemctl stop mynginx
    -systemctl reload mynginx
    
    
7.开机自启动
  systemctl enable mynginx # 开机启动
  systemctl disable mynginx # 取消开机启动


8.关闭防火墙,设置不开机自启动
  systemctl stop firewalld
  systemctl disable firewalld

进程管理


1.ps -aux   # 查看进程
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        1  0.4  0.3 128148  6800 ?        Ss   15:08   0:01 /usr/lib/systemd/systemd
root        2  0.0  0.0      0     0 ?        S    15:08   0:00 [kthreadd]

2.需要知道的
  1.哪个用户启动
  2.进程id是什么,后期杀进程,可以使用进程id号
  3.cpu占用率
  4.内存占用率
  5.COMMAND  进程的命令  [系统进程]  其他进程


3.ps aux | grep redis  # guol

4.孤儿进程和僵尸进程
5.ps -ef  # 多了ppid

6.top  动态查看进程

7.杀进程
  kill -9 进程id号
  pkill -9 进程名   批量干掉进程

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论