Linux~系统基础学习

一、Linux安装系统

(一)安装Linux系统的时候,开头的行尾添加net.ifnames=0 biosdevname=0 ,然后按 "ctrl+x" 进入系统后即可

二、Linux系统重要的目录与文件

(一)设置网卡别名

查看网卡文件的命令,设置成一个别名叫ccwk

# alias ccwk='cat /etc/sysconfig/network-scripts/ifcfg-eth0'
#取消别名
# unalias ccwk

(二)"应用商店"搜索软件

[root@root ~]# yum list| grep nginx
nginx-filesystem.noarch                  1:1.20.1-10.el7               @epel    
collectd-nginx.x86_64                    5.8.1-2.el7                   epel     
munin-nginx.noarch                       2.0.75-1.el7                  epel     
nginx.x86_64                             1:1.20.1-10.el7               epel     
nginx-all-modules.noarch                 1:1.20.1-10.el7               epel     
nginx-mod-devel.x86_64                   1:1.20.1-10.el7               epel  

(三)软件安装命令

软件安装命令方法一:

rpm -ivh ./*.rpm
软件安装命令方法二:

yum -y localinstall ./*.rpm
#rpm安装方式,无法解决依赖问题,所以不建议使用,安装的时候很痛苦;

-i #就是install

-v #显示安装过程

-h #人类可读

(四)查看系统日志

[root@root ~]# ll /var/log/messages 
-rw-------. 1 root root 652960 7月  23 15:01 /var/log/messages
您在 /var/spool/mail/root 中有新邮件
[root@root ~]# tail -10 /var/log/messages 
Jul 23 11:21:32 wuyonggang systemd: Reloading.
Jul 23 11:30:18 wuyonggang systemd: Reloading.

(五)查看访问日志

[root@root ~]# tail -10 /var/log/secure 
Jul 23 10:44:01 wuyonggang sshd[3501]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jul 23 10:47:04 wuyonggang sshd[3501]: pam_unix(sshd:session): session closed for user root
Jul 23 10:47:05 wuyonggang sshd[3527]: Accepted password for root from 10.0.0.1 port 58259 ssh2

(六)查看系统磁盘信息

┌──(root?kalich)-[~]
└─# df -h
文件系统        容量  已用  可用 已用% 挂载点
udev            1.9G     0  1.9G    0% /dev
tmpfs           390M  1.1M  389M    1% /run
/dev/sda1        58G   12G   44G   22% /
tmpfs           2.0G     0  2.0G    0% /dev/shm
tmpfs           5.0M     0  5.0M    0% /run/lock
tmpfs           390M   72K  390M    1% /run/user/124
tmpfs           390M   72K  390M    1% /run/user/0

(七)查看系统内存信息

┌──(root㉿kalich)-[~]
└─# free -h
          total        used        free      shared  buff/cache   available
内存:      3.8Gi       307Mi       3.2Gi       6.0Mi       309Mi       3.3Gi
交换:      974Mi          0B       974Mi

(八)变量文件的优先级

~/.bash_profile << ~/.bashrc  << /etc/profile << /etc/bashrc 

三、Linux系统优化

1.主机名优化

2.字符集优化

3.系统时间同步

4.下载源优化

5.关闭selinux\firewalld

6.关闭远程SSHD连接

四、Linux系统文件属性

(一)查看文件信息详情

└─# stat 01.txt    
  文件:01.txt
  大小:0         	块:0          IO 块:4096   普通空文件
设备:801h/2049d	Inode:1606338     硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2024-08-21 08:36:09.827982332 +0800
最近更改:2024-08-21 08:36:09.827982332 +0800
最近改动:2024-08-21 08:36:09.827982332 +0800
创建时间:2024-08-21 08:36:09.827982332 +0800

1.什么是Inode?

Inode(索引节点)是一个非常重要的概念,它用来存储文件或目录的元数据。这些元数据包括文件大小、文件权限、文件所有者、所属组以及其他用户的读、写、执行权限信息。

(二)查看文件类型

└─# file 01.txt
01.txt: empty

(三)通过权限查找

└─# find ~ -perm 644
/root/.msf4/logs/production.log
/root/.msf4/logs/framework.log
/root/.msf4/history
/root/.msf4/store/modules_metadata.json
/root/.dmrc
/root/.zshrc

(四)压缩解压文件

└─# tar zcvf 01.tar.gz ./01.txt
./01.txt
└─# tar zcvf 01.tar.gz ./01.txt
./01.txt
            
#tf,解压前查看文件内容
┌──(root㉿kalich)-[/tmp]
└─# tar tf 01.tar.gz 
./01.txt

#xvf  (x解压)压缩文件
┌──(root㉿kalich)-[/tmp]
└─# tar xvf 01.tar.gz -C /tmp/
./01.txt

(五)查看inode号占用情况

┌──(root㉿kalich)-[/tmp]
└─# df -hi
文件系统       Inodes 已用(I) 可用(I) 已用(I)% 挂载点
udev             479K     376    478K       1% /dev
tmpfs            487K     634    487K       1% /run
/dev/sda1        3.7M    357K    3.4M      10% /
tmpfs            487K       1    487K       1% /dev/shm
tmpfs            487K       2    487K       1% /run/lock
tmpfs             98K      76     98K       1% /run/user/124
tmpfs             98K      67     98K       1% /run/user/0

(六)磁盘恶意占满问题

系统磁盘满溢的两种情况:

> - 小文件过多(block占满)

> - 大文件过大过多(真正塞满了)
1.查看磁盘利用情况,inodes

─# df -hi  
文件系统       Inodes 已用(I) 可用(I) 已用(I)% 挂载点
udev             479K     376    478K       1% /dev
tmpfs            487K     634    487K       1% /run
/dev/sda1        3.7M    357K    3.4M      10% /
tmpfs            487K       1    487K       1% /dev/shm
tmpfs            487K       2    487K       1% /run/lock
tmpfs             98K      76     98K       1% /run/user/124
tmpfs             98K      67     98K       1% /run/user/0

查找占用空间大的目录或文件du -hs *

┌──(root㉿kalich)-[/var/log]
└─# du -hs *   
76K	alternatives.log
4.0K	apache2
720K	apt
28K	auth.log
16K	boot.log
0	btmp
156K	daemon.log

(七)文件硬链接和软连接

#硬链接:删除源文件,硬链接依旧可以访问;

  • 就是文件的入口;直接指向inode号码;

ln 文件名 硬链接名
#软连接:就是快捷方式,删除源文件,软连接失效;

ln -s 文件名 软链接名
硬链接和软链接的区别:

1)硬链接是通过索引节点(inode)与源文件形成直接连接,多个硬链接指向同一个文件的数据块,因此它们共享文件的数据。硬链接不能跨文件系统,且不能为目录创建硬链接。

2)软链接则是一个独立的文件,它包含了指向另一个文件或目录的路径。软链接不共享文件的数据块,有自己的inode和文件数据,可以跨文件系统,并且可以为目录创建软链接。

3)硬链接共享同一个inode,因此删除一个硬链接不会影响文件的数据。软链接有自己的inode和不共享inode,因此删除软链接不会影响原始文件。

五、用户权限管理

(一)用户分类

1,root #皇帝用户,定制规则的用户,系统高级管理员;【0】

2,普通用户 #老百姓,官员;有特定的权限,权限是root授予的;【大于1000】

3,傀儡(虚拟)用户 #没有家目录,不能登录系统;sshd; 【0-999】

(二)修改文件的属主和属组

1.修改单个文件的属主和属组

[root@ ~]# chown oldboy.oldboy 1.txt 
[root@ ~]# ll
总用量 4
-rw-r--r-- 1 oldboy oldboy 4 7月  29 11:15 1.txt

2.-R递归修改属主和属组

bash 复制代码
[root@ ~]# chown -R oldboy.oldboy /oldboy-test
[root@ ~]# ll /oldboy-test/1.txt 
-rwxr--r-- 1 oldboy oldboy 0 7月  29 15:15 /oldboy-test/1.txt

(三)用户密码设置和修改

1.交互式修改密码

bash 复制代码
#1,交互式
[root@ ~]# passwd use01 
更改用户 use01 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新

2.非交互方式

bash 复制代码
[root@ ~]# echo "1" | passwd --stdin user02
更改用户 user02 的密码 。
passwd:所有的身份验证令牌已经成功更新。

(四)查看当前链接用户

bash 复制代码
#查看当前链接用户(显示的信息比w少一点)
[root@user ~]# who
root     tty1         2024-07-30 11:41
root     pts/0        2024-07-30 10:03 (10.0.0.1)
user01     pts/1        2024-07-30 11:34 (10.0.0.1)

(五)查看当前登录的所有用户

bash 复制代码
┌──(root㉿kalich)-[/var/log]
└─# who            
root     pts/0        2024-08-21 08:29 (10.0.0.1)
                                                                                             
┌──(root㉿kalich)-[/var/log]
└─# w  
 09:37:36 up  1:08,  1 user,  load average: 0.20, 0.14, 0.15
USER     TTY      来自           LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.0.1         08:29    2.00s  4.52s  0.00s w

(六) 特殊权限[suid][sgid][sbit]

1.suid #让所有用户,在使用这个命令文件的时候,都拥有属主一样的权利;

bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# ll
总用量 28
-rw-r--r-- 1 root root  111  8月 21 08:48 01.tar.gz
-rw-r--r-- 1 root root    0  8月 21 08:36 01.txt


┌──(root㉿kalich)-[/tmp]
└─# chmod u+s 01.txt 
                                                                                             
┌──(root㉿kalich)-[/tmp]
└─# ll 
总用量 28
-rw-r--r-- 1 root root  111  8月 21 08:48 01.tar.gz
-rwSr--r-- 1 root root    0  8月 21 08:36 01.txt

2.sgid #让所有用户,在使用这个命令文件的时候,都拥有属组一样的权利;

bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# touch 2.txt
                                                                                             
┌──(root㉿kalich)-[/tmp]
└─# ll
总用量 28
-rw-r--r-- 1 root root  111  8月 21 08:48 01.tar.gz
-rwSr--r-- 1 root root    0  8月 21 08:36 01.txt
-rw-r--r-- 1 root root    0  8月 21 09:44 2.txt


┌──(root㉿kalich)-[/tmp]
└─# chmod g+s 2.txt 
                                                                                             
┌──(root㉿kalich)-[/tmp]
└─# ll
总用量 28
-rw-r--r-- 1 root root  111  8月 21 08:48 01.tar.gz
-rwSr--r-- 1 root root    0  8月 21 08:36 01.txt
-rw-r-Sr-- 1 root root    0  8月 21 09:44 2.txt

3,sbit #粘滞位,只有属主能够编辑和删除 这个文件或目录,其他用户只能查看

bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# touch 3.txt
                                                                                             
┌──(root㉿kalich)-[/tmp]
└─# ll
总用量 28
-rw-r--r-- 1 root root  111  8月 21 08:48 01.tar.gz
-rwSr--r-- 1 root root    0  8月 21 08:36 01.txt
-rw-r-Sr-- 1 root root    0  8月 21 09:44 2.txt
-rw-r--r-- 1 root root    0  8月 21 09:46 3.txt


┌──(root㉿kalich)-[/tmp]
└─# chmod o+t 3.txt
                                                                                             
┌──(root㉿kalich)-[/tmp]
└─# ll
总用量 28
-rw-r--r-- 1 root root  111  8月 21 08:48 01.tar.gz
-rwSr--r-- 1 root root    0  8月 21 08:36 01.txt
-rw-r-Sr-- 1 root root    0  8月 21 09:44 2.txt
-rw-r--r-T 1 root root    0  8月 21 09:46 3.txt

(七)文件上锁

背景:如果说其它用户,获取了我们的root用户及权限,登录系统,对系统重要的数据文件进行破坏,该怎么防御?

bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# touch 4.txt
                                                                                             
┌──(root㉿kalich)-[/tmp]
└─# ll
总用量 28
-rw-r--r-- 1 root root  111  8月 21 08:48 01.tar.gz
-rwSr--r-- 1 root root    0  8月 21 08:36 01.txt
-rw-r-Sr-- 1 root root    0  8月 21 09:44 2.txt
-rw-r--r-T 1 root root    0  8月 21 09:46 3.txt
-rw-r--r-- 1 root root    0  8月 21 09:50 4.txt
bash 复制代码
#文件上锁,让root也无法对文件数据进行破坏
┌──(root㉿kalich)-[/tmp]
└─# chattr +i 4.txt
                                                                                             
┌──(root㉿kalich)-[/tmp]
└─# ll
总用量 28
-rw-r--r-- 1 root root  111  8月 21 08:48 01.tar.gz
-rwSr--r-- 1 root root    0  8月 21 08:36 01.txt
-rw-r-Sr-- 1 root root    0  8月 21 09:44 2.txt
-rw-r--r-T 1 root root    0  8月 21 09:46 3.txt
-rw-r--r-- 1 root root    0  8月 21 09:50 4.txt

#查看文件是否上锁
┌──(root㉿kalich)-[/tmp]
└─# lsattr 4.txt   
----i---------e------- 4.txt

六、系统文件三剑客

(一)grep 数据定位查找

grep 【参数】 【查找的内容】【目标文件】

-i:忽略大小写

-r:递归查找

-n:显示匹配行的行号

-v:显示不包含匹配文本的行

-c:显示匹配的行数

1. -i 忽略大小写
bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# grep -i "ROOT" /etc/passwd
root:x:0:0:root:/root:/usr/bin/zsh
nm-openvpn:x:117:127:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/usr/sbin/nologin
         
2. -r 递归查找
bash 复制代码
# 递归地搜索/etc目录及其子目录中的所有文件,查找包含"10.0.0.111"的行
┌──(root㉿kalich)-[/tmp]
└─# grep -r "10.0.0.111" /etc 
/etc/NetworkManager/system-connections/Wired connection 1:address1=10.0.0.111/24,10.0.0.254
/etc/hosts:10.0.0.111	kalich
3.-n 显示匹配行的行号
bash 复制代码
└─# grep -v -n "^$" /etc/NetworkManager/system-connections/Wired\ connection\ 1 
1:[connection]
2:id=Wired connection 1
3:uuid=6ab2109f-711e-474c-b866-7207032ea00a
4:type=ethernet
5:timestamp=1724122984
7:[ethernet]
9:[ipv4]
10:address1=10.0.0.111/24,10.0.0.254
11:dns=223.5.5.5;
12:method=manual
14:[ipv6]
15:addr-gen-mode=eui64
16:ip6-privacy=2
17:method=auto
19:[proxy]
4.-v 显示不包含匹配文本的行
bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# grep -v "#" /etc/selinux/semanage.conf 
module-store = direct


expand-check=0

grep -v "^$" 【网卡】、查找网卡内容并且过滤掉空格

bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# grep -v "^$" /etc/NetworkManager/system-connections/Wired\ connection\ 1 
[connection]
id=Wired connection 1
uuid=6ab2109f-711e-474c-b866-7207032ea00a
type=ethernet
timestamp=1724122984
[ethernet]
[ipv4]
address1=10.0.0.111/24,10.0.0.254
dns=223.5.5.5;
method=manual
5.-c 显示匹配的行数
bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# grep -v -c "^$" /etc/NetworkManager/system-connections/Wired\ connection\ 1  
15
      

(二)sed 数据修改

背景:sed是一个流编辑器,用于对输入流(或文件)进行基本的文本转换。它经常被用于脚本和自动化任务中,以执行基本的文本替换、删除、插入和其他编辑操作。

sed

-i #修改文件

-i.bak #修改前备份

-r #支持扩展正则

-n #取消默认输出

语法:sed [options] 'command' file

1.-i 修改文件

s###g s///g s@@@g

s :sub 替换

g:global全局替换

bash 复制代码
# 示例:在文件中将所有"apple"替换为"orange",并直接修改文件,可以使用以下命令:
方法一:sed -i 's/apple/orange/g' file.txt
方法二:sed -i 's#apple#orange#g' file.txt
方法三:sed -i 's@apple@orange@g' file.txt

┌──(root㉿kalich)-[/tmp]
└─# cat file.txt                                                    
apple/orangeapple/orangeapple/orange

apple apple apple 

orange 

apple APPLE APPLE


┌──(root㉿kalich)-[/tmp]
└─# sed -i 's#apple#orange#g' ./file.txt
                                                                                             
┌──(root㉿kalich)-[/tmp]
└─# cat file.txt                        
orange/orangeorange/orangeorange/orange

orange orange orange 

orange 

orange APPLE APPLE
2.-i.bak 修改前备份

sed 在修改 file.txt文件前,先备份未修改内容的file.txt.bak文件

bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# sed -i.bak 's#APPLE#orange#g' ./file.txt 
                                                                                             
┌──(root㉿kalich)-[/tmp]
└─# cat file.txt
orange/orangeorange/orangeorange/orange

orange orange orange 

orange 

orange orange orange

┌──(root㉿kalich)-[/tmp]
└─# ll     
总用量 36
-rw-r--r-- 1 root root  111  8月 21 08:48 01.tar.gz
-rw-r--r-- 1 root root   94  8月 21 10:44 file.txt
-rw-r--r-- 1 root root   92  8月 21 10:43 file.txt.bak

┌──(root㉿kalich)-[/tmp]
└─# cat file.txt.bak
orange/orangeorange/orangeorange/orange

orange orange orange 

orange 

orange APPLE APPLE
                                                                                             
┌──(root㉿kalich)-[/tmp]
└─# 
3.-r 支持扩展正则

删除目标文件中的 空行和注释

bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# sed -ri "/^$|^#/d" file.txt
                                                                                             
┌──(root㉿kalich)-[/tmp]
└─# cat file.txt    
orange/orangeorange/orangeorange/orange
orange orange orange 
orange 
orange orange orange
4.-n 取消默认输出

简单理解:刷选出查找想看的文件内容

bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# sed -n "3,10p" /etc/passwd
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
                                                                                             
┌──(root㉿kalich)-[/tmp]
└─# 
5.-e 多个sed命令组合执行
# 多个命令组合:使用"-e"选项可以将多个sed命令组合起来执行
sed -e 's/old_string/new_string/g' -e '3d' file_path

(三)awk 数据切片

背景:awk是一个强大的文本分析工具,它使用一种类似于编程的语言来处理文本文件和字符串。通过使用awk,用户可以对数据进行筛选、格式化和转换等操作

awk

$NF 列的总数

$-F 指定分隔符

$NR==3 取第三行

打印输入流中每一行的第一个字段

awk '{ print $1 }' filename.txt

awk '/条件/{操作}' file # awk 'pattern { action }' file

1.$1 $NF

打印查找内容的第一列、第三列、最后一列

bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# ll /etc | awk '{print $1,$3,$NF}'
总用量  1308
-rw-r--r-- root adduser.conf
-rw-r--r-- root adduser.conf.dpkg-save
drwxr-xr-x root alsa
drwxr-xr-x root alternatives
drwxr-xr-x root apache2
drwxr-xr-x root apparmor
drwxr-xr-x root apparmor.d
drwxr-xr-x root apt
drwxr-xr-x root avahi
-rw-r--r-- root bash.bashrc
-rw-r--r-- root bash_completion
drwxr-xr-x root bash_completion.d
-rw-r--r-- root bindresvport.blacklist
drwxr-xr-x root binfmt.d
drwxr-xr-x root bluetooth
2.-F 指定分隔符

根据分隔符:从passwd文件内容中取出第一列、第三列

bash 复制代码
└─# awk -F ':' '{print $1,$3}' /etc/passwd
root 0
daemon 1
bin 2
sys 3
sync 4
games 5
3.组合使用,切片出eth0网卡的IP地址

ip a s eth0 | sed -n "3p" | awk '{print $2}' | awk -F '/' '{print $1}'

bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:2b:2f:f3 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.111/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe2b:2ff3/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever


┌──(root㉿kalich)-[/tmp]
└─# ip a s eth0 | sed -n "3p" | awk '{print $2}' | awk -F '/' '{print $1}'
10.0.0.111

第二种方法:ip a s eth0 | awk 'NR==3' | awk '{print $2}' | awk -F '/' '{print $1}'

bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# ip a s eth0 | awk 'NR==3' | awk '{print $2}' | awk -F '/' '{print $1}'
10.0.0.111

七、系统进程

普通进程:进程出现后,当任务执行完毕后,就会结束进程;

守护进程:进程出现后,当任务执行完毕后,也会继续留在后台,等待新的任务产生;

(一)查看系统中进程

语法:ps -ef

bash 复制代码
└─# ps -ef         
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 08:28 ?        00:00:02 /sbin/init splash
root           2       0  0 08:28 ?        00:00:00 [kthreadd]
root           3       2  0 08:28 ?        00:00:00 [rcu_gp]
root           4       2  0 08:28 ?        00:00:00 [rcu_par_gp]
root           5       2  0 08:28 ?        00:00:00 [netns]
root           7       2  0 08:28 ?        00:00:00 [kworker/0:0H-events_highpri]
root          10       2  0 08:28 ?        00:00:00 [mm_percpu_wq]
root          11       2  0 08:28 ?        00:00:00 [rcu_tasks_kthread]

(二)查看系统中进程的状态

查看sshd服务进程的状态

bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# ps axu | grep sshd
root         658  0.0  0.1  13924  7836 ?        Ss   08:29   0:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root        2684  0.0  0.2  16876  9504 ?        Ss   10:51   0:01 sshd: root@pts/0
root        3313  0.0  0.0   6668  2332 pts/0    S+   11:24   0:00 grep --color=auto sshd
             

(三)动态查看系统进程

top 立刻刷新,

top -d 1 每一秒刷新

top -d 1 -p 10126 查看指定进程的动态信息

top -d 1 -p 10126,1查看10126和一号进程,同时查看两个进程

bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# top                       
top - 11:25:05 up  2:56,  1 user,  load average: 0.18, 0.20, 0.20
任务: 154 total,   1 running, 153 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.0 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   3895.4 total,   3007.4 free,    330.3 used,    557.7 buff/cache
MiB Swap:    975.0 total,    975.0 free,      0.0 used.   3319.1 avail Mem 

 进程号 USER      PR  NI    VIRT    RES    SHR    %CPU  %MEM     TIME+ COMMAND              
     35 root      20   0       0      0      0 I   0.3   0.0   0:16.62 kworker/1:1-pm       
   2890 root      20   0       0      0      0 I   0.3   0.0   0:04.16 kworker/1:0-events   
      1 root      20   0  166104  11224   8376 S   0.0   0.3   0:02.29 systemd 

top -d 1 -p 1 查看指定进程的动态信息

bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# top -d 1 -p 1
top - 11:53:43 up  3:24,  1 user,  load average: 0.15, 0.15, 0.17
任务:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   3895.4 total,   3007.6 free,    329.6 used,    558.3 buff/cache
MiB Swap:    975.0 total,    975.0 free,      0.0 used.   3319.8 avail Mem 

 进程号 USER      PR  NI    VIRT    RES    SHR    %CPU  %MEM     TIME+ COMMAND              
      1 root      20   0  166104  11224   8376 S   0.0   0.3   0:02.41 systemd 

(四)修改进程优先级

1.先查看sshd的进程优先级
bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# ps axo pid,ni,command | grep sshd
    658   0 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
   2684   0 sshd: root@pts/0
   3962   0 grep --color=auto sshd
2.修改sshd的进程优先级
bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# ps axo pid,ni,command | grep sshd
    658  -5 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
   2684   0 sshd: root@pts/0
   4087   0 grep --color=auto sshd
                                                                                                                                                
┌──(root㉿kalich)-[/tmp]
└─# renice -n -0 658                 
658 (process ID) old priority -5, new priority 0
                                                                                                                                                
┌──(root㉿kalich)-[/tmp]
└─# ps axo pid,ni,command | grep sshd
    658   0 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
   2684   0 sshd: root@pts/0
   4095   0 grep --color=auto sshd
                                                                                                                                                
┌──(root㉿kalich)-[/tmp]
└─# 

(五)进程查看筛选常用命令

1.ps axo 自定义显示字段
bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# ps axo user,pid,ni,command | grep sshd
root         658   0 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root        2684   0 sshd: root@pts/0
root        3746   0 grep --color=auto sshd
                                                                                             
┌──(root㉿kalich)-[/tmp]
└─# 

显示前五行

bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# ps axo user,pid,ni,command | head -5  
USER         PID  NI COMMAND
root           1   0 /sbin/init splash
root           2   0 [kthreadd]
root           3 -20 [rcu_gp]
root           4 -20 [rcu_par_gp]
2.ps -ef 查看系统进程

查看系统所有进程,并且显示前五行

便捷查看进程之间的父子关系

bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# ps -ef | head -5
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 08:28 ?        00:00:02 /sbin/init splash
root           2       0  0 08:28 ?        00:00:00 [kthreadd]
root           3       2  0 08:28 ?        00:00:00 [rcu_gp]
root           4       2  0 08:28 ?        00:00:00 [rcu_par_gp]
      
3.ps aux 查看进程状态

查看进程状态,并且以内存占用大小,降序显示前10行

bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# ps aux --sort -%mem | head -10
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
lightdm      827  0.0  2.8 642328 111724 ?       Ssl  08:29   0:05 /usr/sbin/lightdm-gtk-greeter
root         642  0.0  1.9 379736 77620 tty7     Ssl+ 08:29   0:01 /usr/lib/xorg/Xorg :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
lightdm      826  0.0  0.7 381924 31792 ?        S<sl 08:29   0:01 /usr/bin/pulseaudio --daemonize=no --log-target=journal
root        2703  0.0  0.7 379840 30072 ?        S<sl 10:51   0:00 /usr/bin/pulseaudio --daemonize=no --log-target=journal
root         611  0.0  0.5 258508 21492 ?        Ssl  08:29   0:00 /usr/sbin/NetworkManager --no-daemon
root         405  0.1  0.4 260544 17740 ?        Ssl  08:29   0:19 /usr/bin/vmtoolsd
root         354  0.0  0.3  31820 12656 ?        Ss   08:29   0:00 /lib/systemd/systemd-journald
root         612  0.0  0.3 243948 12008 ?        Ssl  08:29   0:00 /usr/sbin/ModemManager
root           1  0.0  0.2 166104 11224 ?        Ss   08:28   0:02 /sbin/init splash
        

八、网络基础和命令

(一) ARP协议

ARP协议:实现IP地址与mac地址的对应关系的,建立对应关系后,存入ARP表中windows查看局域网下的arp表:arp -a

为什么建立对应关系:

1,避免经常广播风暴

2,避免外来人带着电脑插线黑入我们网络;

(二)DNS域名解析协议

DNS域名解析协议

#1,域名的组成

www.baidu.com.

【www】 #A记录 可以人为设定

【.baidu】 #权威域名 企业去申请得来的

【.com】 #顶级域名.org .cn .....

【.】 #根域名

2.解析步骤

#1,用户输入"域名"回车

#2,请求本地

  • hosts

  • 缓存

  • DNS服务器

#3,直接根域名服务器,顶级域名服务器的IP地址;

#4,顶级域名服务返回权威域名服务器地址(.baidu);

#5, dns服务器将百度的ip地址返给你,你拿着ip地址直接访问成功;

(三)netstat 命令

netstat

  • l #只查看listen监听状态的

  • n #将服务名称以数字的形式显示

  • t #显示tcp协议

  • u #显示udp协议

  • p #显示进程信息

1.netstat -tnulp
bash 复制代码
┌──(root㉿kalich)-[~]
└─# netstat -tnulp                                               
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      5839/sshd: /usr/sbi 
tcp        0      0 127.0.0.1:6011          0.0.0.0:*               LISTEN      6633/sshd: root@pts 
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      2684/sshd: root@pts 
tcp6       0      0 ::1:6011                :::*                    LISTEN      6633/sshd: root@pts 
tcp6       0      0 ::1:6010                :::*                    LISTEN      2684/sshd: root@pts 
tcp6       0      0 :::22                   :::*                    LISTEN      5839/sshd: /usr/sbi 

(四)tcpdump抓包工具

1. 下载tcpdump工具

命令:yum -y install tcpdump

tcpdump

-i #interface指定抓哪个接口的数据包。

-nn #以数字方式显示服务名称(端口)

-X #把协议头、包的内容都完全的显示出来(16进制的方式)

-c 3 #在收到指定包数目之后,tcpdump就会停止;

-w #write 写入保存到文件中。导入的文件可以使用wireshark打开。

-r #read 读取文件中的数据

2.抓包
bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# sudo tcpdump -i eth0 -nn -X -c 10 -w tcp.txt
tcpdump: listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
10 packets captured
28 packets received by filter
0 packets dropped by kernel
3.读取抓包
bash 复制代码
──(root㉿kalich)-[/tmp]
└─# tcpdump -r tcp.txt                          
reading from file tcp.txt, link-type EN10MB (Ethernet), snapshot length 262144
15:11:59.690589 IP kalich.ssh > 10.0.0.1.53076: Flags [P.], seq 3188969421:3188969545, ack 781334191, win 501, length 124
15:11:59.744657 IP 10.0.0.1.53076 > kalich.ssh: Flags [.], ack 124, win 4104, length 0
15:11:59.947335 ARP, Request who-has 10.0.0.254 tell kalich, length 28
15:12:00.959914 ARP, Request who-has 10.0.0.254 tell kalich, length 28
15:12:01.981934 ARP, Request who-has 10.0.0.254 tell kalich, length 28
15:12:03.022431 ARP, Request who-has 10.0.0.254 tell kalich, length 28
15:12:04.032491 ARP, Request who-has 10.0.0.254 tell kalich, length 28
15:12:05.056725 IP 10.0.0.1.53339 > kalich.ssh: Flags [S], seq 3421031027, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
15:12:05.056765 IP kalich.ssh > 10.0.0.1.53339: Flags [S.], seq 719692171, ack 3421031028, win 64240, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
15:12:05.057111 IP 10.0.0.1.53339 > kalich.ssh: Flags [.], ack 1, win 4106, length 0
                                                                                      
3.mac:根据mac地址进行抓包

src 00:0c:29:ae:89:5d :是指源mac地址为:00:0c:29:ae:89:5d

ether:是值icmp协议中没有源ip和目的ip,所以需要依赖于ether 协议。

bash 复制代码
# tcpdump -i ens33 ether src  00:0c:29:ae:89:5d
4.抓取源ip地址为192.168.17.64访问本机的tcp协议的80端口的数据包。
bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# tcpdump -i eth0 src host 192.168.17.64 and dst port 80 and tcp
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
5.抓取10.0.0.1这台机器ping过来的数据包
bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# tcpdump -i eth0 icmp and src host 10.0.0.1     
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
15:33:27.183145 IP 10.0.0.1 > kalich: ICMP echo request, id 1, seq 9, length 40
15:33:28.197674 IP 10.0.0.1 > kalich: ICMP echo request, id 1, seq 10, length 40
15:33:29.210889 IP 10.0.0.1 > kalich: ICMP echo request, id 1, seq 11, length 40
15:33:30.225330 IP 10.0.0.1 > kalich: ICMP echo request, id 1, seq 12, length 40
15:33:31.046918 IP 10.0.0.1 > kalich: ICMP echo request, id 1, seq 13, length 40
15:33:32.070314 IP 10.0.0.1 > kalich: ICMP echo request, id 1, seq 14, length 40
15:33:33.077301 IP 10.0.0.1 > kalich: ICMP echo request, id 1, seq 15, length 40
15:33:34.088288 IP 1
6.抓取访问本机的icmp报文或者arp报文
bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# tcpdump -nn -i eth0 icmp or arp           
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
15:35:26.593194 ARP, Request who-has 10.0.0.254 tell 10.0.0.111, length 28
15:35:27.621940 ARP, Request who-has 10.0.0.254 tell 10.0.0.111, length 28
15:35:28.648214 ARP, Request who-has 10.0.0.254 tell 10.0.0.111, length 28
15:35:29.687587 ARP, Request who-has 10.0.0.254 tell 10.0.0.111, length 28
15:35:30.716935 ARP, Request who-has 10.0.0.254 tell 10.0.0.111, length 28
15:35:31.747212 ARP, Request who-has 10.0.0.254 tell 10.0.0.111, length 28
7.tcpdump -D 命令列出可以抓包的网络接口
bash 复制代码
┌──(root㉿kalich)-[/tmp]
└─# tcpdump -D                     
1.eth0 [Up, Running, Connected]
2.any (Pseudo-device that captures on all interfaces) [Up, Running]
3.lo [Up, Running, Loopback]
4.bluetooth0 (Bluetooth adapter number 0) [Wireless, Association status unknown]
5.bluetooth-monitor (Bluetooth Linux Monitor) [Wireless]
6.nflog (Linux netfilter log (NFLOG) interface) [none]
7.nfqueue (Linux netfilter queue (NFQUEUE) interface) [none]
8.dbus-system (D-Bus system bus) [none]
9.dbus-session (D-Bus session bus) [none]
                                                                                                                  
┌──(root㉿kalich)-[/tmp]
└─# 

(五)网络七层模型

应用层 #提供应用程序网络接口,数据的产生;

表示层 #数据加密解密、压缩解压缩;

会话层 #维持建立、断开两个不同主机之间通讯会话(详见TCP);

传输层 #端口信息封装:我的+目标

网络层 #ip地址:我的+目标

数据链路层 #mac:我的+目标

物理层 #bit==01011100111 ==光电无线信号传输出去

相关推荐
正在走向自律21 分钟前
阿里云ESC服务器一次性全部迁移到另一个ESC
服务器·阿里云·云计算
gywl1 小时前
openEuler VM虚拟机操作(期末考试)
linux·服务器·网络·windows·http·centos
青木沐1 小时前
Jenkins介绍
运维·jenkins
WTT00111 小时前
2024楚慧杯WP
大数据·运维·网络·安全·web安全·ctf
苹果醋32 小时前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
了一li2 小时前
Qt中的QProcess与Boost.Interprocess:实现多进程编程
服务器·数据库·qt
杨德杰2 小时前
QT网络(一):主机信息查询
网络·qt
日记跟新中2 小时前
Ubuntu20.04 修改root密码
linux·运维·服务器
唐小旭2 小时前
服务器建立-错误:pyenv环境建立后python版本不对
运维·服务器·python