一、权限扩展
文件权限管理之: 隐蔽权限防止root误删除
文件属性添加与查看
- [root@linux-server ~]# touch file1 file2 file3
- 1.查看文件属性
- [root@linux-server ~]# lsattr file1 file2 file3
- ---------------- file1
- ---------------- file2
- ---------------- file3
- 2.设置权限
- [root@linux-server ~]# chattr +a file1 #不允许修改,只允许追加
- [root@linux-server ~]# chattr +i file2 #不允许做任何操作
- [root@linux-server ~]# chattr +A file3
- [root@linux-server ~]# lsattr file1 file2 file3
- -----a---------- file1
- ----i----------- file2
- -------A-------- file3
- i:即Immutable,系统不允许对这个文件进行任何的修改
- a:即Append Only,系统只允许在这个文件之后追加数据,不允许任何覆盖这个文件
- A:即Atime,告诉系统不要修改对这个文件的最后访问时间
复制代码 测试效果
- [root@linux-server ~]# echo 111 > file1 #覆盖,只允许追加
- -bash: file1: Operation not permitted
- [root@linux-server ~]# rm -rf file1 #不能删除
- rm: cannot remove ‘file1’: Operation not permitted
- [root@linux-server ~]# echo 111 >> file1 #追加
- [root@linux-server ~]# echo 111 > file2
- -bash: file2: Permission denied
- [root@linux-server ~]# echo 111 >> file2
- -bash: file2: Permission denied
- [root@linux-server ~]# rm -rf file2
- rm: cannot remove ‘file2’: Operation not permitted
- [root@linux-server ~]# mv file2 file4
- mv: cannot move ‘file2’ to ‘file4’: Operation not permitted
- 取消权限
- [root@linux-server ~]# chattr -a file1
- [root@linux-server ~]# chattr -i file2
复制代码 二、进程管理
关于进程 process
- What is a process? 什么是进程
- Process states 进程状态
复制代码 什么是进程?
- 进程是已启动的可执行程序的运行实例,是程序运行的过程,动态的,有生命周期及运行状态。
复制代码- 程序: 二进制文件,静态 /bin/date, /usr/sbin/httpd,/usr/sbin/sshd, /usr/sbin/nginx
复制代码 查看进程 process
静态查看进程
- [root@linux-server ~]# ps aux | less (这个less是翻页的意思)
- 参数解释:
- ps :process nsapashot
- a 只能查看系统里面运行的所有终端进程
- u 显示进程拥有者
- x 显示系统内所有进程
- f 显示进程之间的父子关系
- -------------------
复制代码 如图所示:
- [root@linux-server ~]# ps aux
- USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- ============================================================================
- USER: #运行进程的用户
- PID: #进程ID
- %CPU: #CPU占用率
- %MEM: #内存占用率
- VSZ 进程占用的虚拟内存大小
- RSS 占用的物理内存大小
- STAT: #进程状态 ---了解
- ? 表示没有占用终端
- R 运行
- S 可中断睡眠 Sleep
- D 不可中断睡眠
- T 停止的进程
- Z 僵尸进程
- X 死掉的进程
- START: #进程的启动时间
- TIME: #进程占用CPU的总时间
- COMMAND: #进程文件,进程名
- 进程状态--了解
- Sl 以线程的方式运行
- Ss s进程的领导者,父进程
- R+ +表示是前台的进程组
- S< <优先级较高的进程
- SN N优先级较低的进程
复制代码- 查看tty的方法:
- [root@linux-server ~]# tty
- ? 表示这个进程开启的时候没有占用终端,使用的是系统
复制代码 查看进程(二)
- [root@linux-server ~]# ps -ef
- 参数解释:
- -e 显示所有进程
- -l 长格式显示
- -f 完整格式
复制代码
- UID 用户ID
- PID 进程ID
- PPID 父进程ID
- C CPU占用率
- STIME 开始时间
- TTY 开始此进程的TTY----终端设备
- TIME 此进程运行的总时间
- CMD 命令名
复制代码 查看单个PID
- [root@linux-server ~]# yum install -y httpd #安装apache软件
- [root@linux-server ~]# systemctl start httpd #启动
- [root@linux-server ~]# cat /var/run/httpd/httpd.pid
- 1043
复制代码 查看指定PID
- [root@linux-server ~]# ps aux | grep sshd
- root 1043 0.0 0.2 105996 4120 ? Ss 01:32 0:00 /usr/sbin/sshd -D
- grep:过滤
复制代码 查看端口
- [root@linux-server ~]# yum install lsof #安装软件包
- [root@linux-server ~]# lsof -i:80 #端口号,这能查看带端口的进程
- COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
- httpd 64249 root 4u IPv6 1373628 0t0 TCP *:http (LISTEN)
- #注意:端口号只有整数,范围是从0 到65535
- 参数解释:
- FD:文件描述符,应用程序通过文件描述符识别该文件。
- DEVICE:指定磁盘的名称
- SIZE:文件的大小
复制代码- #查网络进程和正在监听的端口
- [root@linux-server ~]# netstat -lntp 或者 ss -lntp
- 参数详解:
- -a 显示全部的进程
- -u 显示udp
- -n 以数字的新式显示协议名称
- -t tcp
- -p:显示进程的名称和pid
- -l :只显示正在被监听的端口
- 参数解释:
- recv-Q:网络接收队列
- send-Q:网路发送队列
- Foreign Address:与本机端口通信的外部请求
复制代码- [root@linux-server ~]# w #看已经登陆到终端的进程信息,远程登陆会有ip 地址
- w是详细的登陆信息
- who是精简的登陆信息
- woami 是我当前使用的哪个用户登陆。
- 部分参数解释:
- USER –登录用户名.
- TTY –登录用户使用的终端名.
- FROM –登录用户来源的主机名或IP地址.
- LOGIN@ –用户登录时间.
- WHAT –用户当前的进程及选项/参数。
- 如果有人远程链接了你的终端,使用w查看后,输入:ps aux | grep gts/ 通过查找gts/ ,找到连接人的pid,而后输入kill-9 pid 将其踢出去。
复制代码 动态查看进程
top、htop
- [root@linux-server ~]# top #动态显示信息,三秒刷新一次。
复制代码
- 在工作中必须监控的东西 load average(平均负载)等待cpu处理的队列长度 也是个数。
- 1分钟 第一个数字
- 5分钟 第二个数字
- 15分钟 第三个数字
- ======================
- 计算cpu负载:load average的三个值: 0.10, 0.16, 0.12,分别除cpu的个数,得出的值,如果值大于1那么那时候的负载高。
复制代码 top操纵
- [root@linux-server ~]# top
- h|? 帮助
- > 往下翻页
- < 往上翻页
- M 按内存排序
- P 按cpu排序
- q 退出
- z 彩色显示
- W 保存
- =============================
- PR 优先级
- VIRT 进程使用的虚拟内存总量,单位kb。
- RES 进程使用的、未被换出的物理内存大小,单位kb。
- SHR 共享内存大小,单位kb
- 拓展知识:lscpu 可以查看cpu信息。
复制代码
top - 16:26:45 up 14:54, 3 users,load average: 0.05, 0.06, 0.05
Tasks: 129 total, 2 running, 127 sleeping, 0 stopped, 0 zombie
内容含义16:26:45表现当前时间up 14:54体系远行时间,格式为时:分3 users当前登岸用户数load average: 0.05, 0.06, 0.05体系负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值129 total进程总数2 running正在运行的进程数127 sleeping就寝的进程数0 stopped停止的进程数0 zombie僵尸进程数 %Cpu (s) : 0.2 us, 1.0 sy, 0.0 ni, 98.8 id,0.0 wa, 0.0 hi, 0.0 si, 0.0 st
内容含义0.2 us用户空间占用CPU百分比1.0 sy内核空间占用CPU百分比0.0 ni用户进程空间内改变过优先级的进程占用CPU百分比98.9 id空闲CPU百分比0.0 wa等候输入输出的CPU时间百分比0.0 hi硬停止(Hardware IRQ)占用CPU的百分比0.0 si软停止(Software Interrupts)占用CPU的百分比0.0 st用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间 KiB Mem : 2031912 total, 1549816 free, 155372 free, 326724 buff/cache
内容含义2031912 total物理内存总量1549816 free使用的物理内存总量155372 used空闲内存总量326724 buff/cache用作内核缓存的内存量 KiB Swap: 2097148 total, 2097148 free, 0 used, 1674648 avail Mem
内容含义2097148 total交换区总量2097148 free使用的交换区总量0 used空闲交换区总量1674648 Avail Mem缓冲的交换区总量- ni: nice值
- id: cpu空闲率
- wa: cpu等待,等待输入/输出的进程占用的 CPU 百分比。如果使用率过高,表示硬盘该换了
复制代码 进程优先级 nice
- nice 值越高:表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
- nice 值越低:表示优先级越高,例如-20,该进程更不倾向于让出CPU。
- 指令:
- renice <优先级> -p <PID> # 一般不调整
复制代码 进程控制
按pid杀死进程
- kill,pkill
- 语法: kill 信号 PID #信号也是进程间通信的一种方式
- pkill是批量杀死 相当于批量杀死所有输入的有关信息 例如 pkill -9 nginx 那么系统会杀死所有有关nginx的所有东西 ,所有每次需要使用批量删除时,可以先 ps aux | grep nginx 先看看有没有不需要删除的进程,再用pkill进行删除:而kill就是精准删除。
复制代码- [root@linux-server ~]# kill -l #查看所有信号
- -1 HUP 重新加载进程或者重新加载配置文件,PID不变
- -9 KILL 强制杀死
- -15 TERM 正常杀死(这个信号可以默认不写)
- -18 CONT 激活进程
- -19 STOP 挂起进程
复制代码 使用pkill时为防止误删其他进程可以加上一些其他指令
- 方法一: 要杀死httpd进程时,先输入 pidof httpd 而后 kill -9 `pidof httpd`
- 方法二: 要杀死nginx进程时,先输入 pgrep nginx 而后 kill -9 `pgrep nginx`
复制代码 如下图所示
案例一
给vsftpd进程发送信号1,15 vsftpd信号测试
- [root@linux-server ~]# yum install -y vsftpd #安装vsftpd
- [root@linux-server ~]# systemctl start vsftpd #启动
- [root@linux-server ~]# ps aux | grep vsftpd
- root 59363 0.0 0.0 53212 576 ? Ss 16:47 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
- [root@linux-server ~]# kill -1 59363 #发送重启信号,例如vsftpd的配置文件发生改变,希望重新加载
复制代码- [root@linux-server ~]# ps aux | grep vsftpd
- root 59363 0.0 0.0 53212 748 ? Ss 16:47 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
- [root@linux-server ~]# kill 59363 #正常杀死进程,信号为-15可以默认不写。我们可以使用systemctl stop vsftpd 停止服务。
- [root@linux-server ~]# ps aux | grep vsftpd
- root 62493 0.0 0.0 112660 968 pts/0 S+ 16:51 0:00 grep --color=auto vsftpd
- 进程状态解释--了解:
- +:表示运行在前台的进程
- S+:休眠状态
- T+:暂停,挂起状态
- s:父进程
复制代码 案例二
给vsftpd进程发送信号-9, vsftpd信号测试
- [root@linux-server ~]# systemctl start vsftpd
- [root@linux-server ~]# ps aux | grep vsftpd
- root 67003 0.0 0.0 53212 572 ? Ss 16:57 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
- root 67089 0.0 0.0 112660 972 pts/0 S+ 16:57 0:00 grep --color=auto vsftpd
- [root@linux-server ~]# kill -9 67003 #强制杀死,一般用于不能正常停止的情况下
- [root@linux-server ~]# ps aux | grep vsftpd
- root 67190 0.0 0.0 112660 972 pts/0 S+ 16:57 0:00 grep --color=auto vsftpd
复制代码 案例三
使用pkill 杀死vsftpd进程
- [root@linux-server ~]# systemctl start vsftpd
- [root@linux-server ~]# ps -aux | grep vsftpd
- root 73399 0.0 0.0 53212 572 ? Ss 17:05 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
- root 73499 0.0 0.0 112660 968 pts/0 S+ 17:05 0:00 grep --color=auto vsftpd
- [root@linux-server ~]# pkill -9 vsftpd #使用pkill可以指定进程名字
- [root@linux-server ~]# ps -aux | grep vsftpd
- root 73643 0.0 0.0 112660 968 pts/0 S+ 17:05 0:00 grep --color=auto vsftpd
复制代码 作业控制
作业控制之jobs:
- 作业控制指的是控制正在运行的进程的行为。比如,用户可以挂起一个进程或者放到后台去运行,等一会儿再继续执行该进程。
复制代码 实战案例
- [root@linux-server~]# sleep 7000 & #&:让命令或者程序后台运行
- [1] 5441 [1]是进程的号 5441是进程的pid
- [root@linux-server ~]# sleep 8000 #ctrl+z 把程序放到后台(这方法会让程序在后台暂停)
- ^Z
- [2]+ Stopped sleep 8000
- [root@linux-server ~]# jobs #查看后台的工作号
- [1]- Running sleep 7000 &
- [2]+ Stopped sleep 8000
- [root@linux-server ~]# bg %2 #让暂停的程序在后台运行,%是用来修饰job number,2就是job number。(程序的工作号)
- [2]+ sleep 8000 &
- [root@linux-server ~]# jobs
- [1]- Running sleep 7000 &
- [2]+ Running sleep 8000 &
- [root@linux-server ~]# fg %1 #将后台的程序调到前台
- sleep 7000
- [root@linux-server ~]# jobs
- [2]+ Running sleep 8000 &
- [root@linux-server ~]# kill -9 %2 #通过kill杀死进程
- [root@linux-server ~]# jobs
- [2]+ Killed sleep 8000
- [root@linux-server ~]# jobs #在次查看没有了
复制代码 三、常用下令
- [root@linux-server ~]# uptime
- 17:35:01 up 16:02, 3 users, load average: 0.00, 0.02, 0.05
复制代码- [root@linux-server ~]# free -m
- total used free shared buff/cache available
- Mem: 1984 154 1508 8 321 1632
- Swap: 2047 0 2047
- -m:单位M
- free -g 以g为单位 ;free -k 以k为单位free -h 人性化显示 -h比较好用
复制代码 拓展知识:echo 3 > /proc/sys/vm/drop_caches 这个指令可以清理缓存的内存,但是没啥用,如果负载过高一下就会返来。
- 1. 加电
- 2. 加载bios设置
- 3. 加载grub,
- 4. 加载内核系统到内存当中
- 5. 加载配置文件
- 6. 加载内核模块
- 7. 完成相应的初始化工作和启动相应的服务
- 8. 启动系统进程
- 9. 出现登录界面
- 10. 开机启动完成
复制代码- [root@linux-server ~]# cat /etc/redhat-release #查看版本
- CentOS Linux release 7.4.1708 (Core)
- [root@linux-server ~]# uname -a #看查正在运行的内核版本
- Linux linux-server 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
- [root@linux-server ~]# uname -r #查看内核版本
- 3.10.0-693.el7.x86_64
复制代码- [root@linux-server ~]# hostnamectl set-hostname xxxx #主机名,修改完之后断开与终端连接,然后在重新连接即可。
- 查看主机名
- [root@linux-server ~]# hostname
复制代码- 1 身份验证
- 2 屏幕录制,防止员工对服务器做有害的操作
- 3 批量操作 一次性操作2-200台机器
复制代码- 1.小批量设备,使用U盘安装
- (调整bios参数从U盘启动)
- 2.大批量设备搭建PXE装机系统,从网络批量安装
- (调整网络启动项,从网络启动)
复制代码- # yum install -y lrzsz
- 上传
- # rz
- 下载
- # sz 文件
复制代码 [code][/code]
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |