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递归修改属主和属组

[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.交互式修改密码

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

 2.非交互方式

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

(四)查看当前链接用户

#查看当前链接用户(显示的信息比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)

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

┌──(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 #让所有用户,在使用这个命令文件的时候,都拥有属主一样的权利;

┌──(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 #让所有用户,在使用这个命令文件的时候,都拥有属组一样的权利;

┌──(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 #粘滞位,只有属主能够编辑和删除这个文件或目录,其他用户只能查看

┌──(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用户及权限,登录系统,对系统重要的数据文件进行破坏,该怎么防御?

┌──(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

 

#文件上锁,让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 忽略大小写
┌──(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 递归查找 
# 递归地搜索/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 显示匹配行的行号     
└─# 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 显示不包含匹配文本的行
┌──(root㉿kalich)-[/tmp]
└─# grep -v "#" /etc/selinux/semanage.conf 
module-store = direct


expand-check=0

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

┌──(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 显示匹配的行数   
┌──(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全局替换

# 示例:在文件中将所有"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文件

┌──(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 支持扩展正则

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

┌──(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 取消默认输出

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

┌──(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

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

┌──(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文件内容中取出第一列、第三列

└─# 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}'

┌──(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}'

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

七、系统进程

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

(一)查看系统中进程

语法:ps -ef

└─# 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服务进程的状态

┌──(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和一号进程,同时查看两个进程

┌──(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 查看指定进程的动态信息

┌──(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的进程优先级
┌──(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的进程优先级
┌──(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 自定义显示字段
┌──(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]
└─# 

显示前五行

┌──(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  查看系统进程

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

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

┌──(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行

┌──(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
┌──(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.抓包
┌──(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.读取抓包
──(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 协议。

# tcpdump -i ens33 ether src  00:0c:29:ae:89:5d
4.抓取源ip地址为192.168.17.64访问本机的tcp协议的80端口的数据包。
┌──(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过来的数据包
┌──(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报文
┌──(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 命令列出可以抓包的网络接口
┌──(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 ==光电无线信号传输出去

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值