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