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 ==光电无线信号传输出去

相关推荐
shimly12345628 分钟前
tcpdump 用法示例
网络·测试工具·tcpdump
风静如云37 分钟前
OpenBMC:BmcWeb定义service
linux
sszdzq1 小时前
Docker
运维·docker·容器
book01211 小时前
MySql数据库运维学习笔记
运维·数据库·mysql
leoufung1 小时前
VIM FZF 安裝和使用
linux·编辑器·vim
bugtraq20212 小时前
XiaoMi Mi5(gemini) 刷入Ubuntu Touch 16.04——安卓手机刷入Linux
linux·运维·ubuntu
xmweisi2 小时前
【华为】报文统计的技术NetStream
运维·服务器·网络·华为认证
VVVVWeiYee2 小时前
BGP配置华为——路径优选验证
运维·网络·华为·信息与通信
陆鳐LuLu2 小时前
日志管理利器:基于 ELK 的日志收集、存储与可视化实战
运维·elk·jenkins
CodeWithMe3 小时前
[ Vim ] 常用命令 and 配置
linux·编辑器·vim