Linux 从入门到精通

#第2章 Linux下载与安装

Centos7.4下载地址
http://vault.centos.org/7.4.1708/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso

使用UltraISO将Centos.iso刻录到U盘作为启动盘
https://www.cnblogs.com/larry-luo/p/11102321.html

虚拟机CentOS忘记root密码重置
https://www.cnblogs.com/xingrui/p/11470463.html

根目录

root 超级用户
bin 存储二进制可执行文件
boot 存放用于系统引导时使用的各种文件
dev 用于存放设置文件
etc 存储系统配置文件
home 用户文件的根目录
lib 存放文件系统系统中程序运行时所需要的共享库和内核模块
sbin 存储二进制的可执行文件,只有root才可以访问
usr 用于存放共享的系统资源, usr 指 Unix System Resource
var 用于存放运行时需要改变的数据文件


/etc/profile文件和.bashrc文件的区别
/etc/profile文件为系统的每个用户设置环境变量信息,此文件的修改会影响到所有用户。.bashrc影响当前用户。
修改主机名
#Linux操作系统的hostname是一个kernel变量,通过hostname命令查看主机名
[root@localhost ~]# hostname -I
[root@localhost ~]# cat /proc/sys/kernel/hostname

#临时修改
[root@master ~]# hostname master 
[root@master ~]# hostname 
master

#修改配置文件(重启后生效)
[root@master ~]# vi /etc/hostname 
master
[root@master ~]# vim  /etc/sysconfig/network  修改主机名(root用户有权限)
[root@master ~]# cat /proc/sys/kernel/hostname
master

修改root密码(忘记密码)
https://www.cnblogs.com/zhong-11/articles/9407359.html

yum

1.启用与禁用仓库
禁用仓库:yum-config-manager --disable “仓库名"
启用仓库:yum-config-manager --enable “仓库名”

2.显示软件仓库列表
yum repolist

3.显示软件包列表
yum list

4.安装卸载与更新
安装:yum install package1 package2...
卸载:yum remove package
更新:yum update package
检查可用的更新:yum check-update

yum install net-tools  #ifconfig 命令不起作用

几个包的安装

查找哪个源包含这个命令
yum provides */lsb_release
yum install redhat-lsb-core-4.1-27.el7.centos.1.x86_64

yum -y install fontconfig 安装字体库

查询系统、进程及硬件信息

#查询系统版本
cat /etc/redhat-release
lsb_release -a
cat /proc/version

#查询CPU、内存信息
1、cpu查看 cat /proc/cpuinfo #Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz
2、内存查看:cat /proc/memoryinfo MemTotal:3881692 kB  #cat /proc/meminfo | grep MemTotal
3、硬盘查看: #fdisk -l | grep Disk
原文链接:https://blog.csdn.net/u012442157/article/details/73692168
原文链接:https://www.cnblogs.com/yinfutao/p/9906923.html

vmstat 2 #实时查看内存使用情况,反映的情况比用top直观一些

#free命令
free -k -t -s 10 #可以显示当前系统未使用的和已使用的内存,还可以显示被内核使用的内存缓冲区。

sysctl  -a | grep pid_max    #查看系统 pid_max 值
ps -eLf | wc -l   #查看本服务器进程数

echo 1000000 > /proc/sys/kernel/pid_max  #修改pid_max值为1000000
echo "kernel.pid_max=1000000 " >> /etc/sysctl.confsysctl -p  #设置永久生效
链接 https://blog.csdn.net/weixin_42660202/article/details/102587270

#smem
Linux监控工具smem介绍 https://www.cnblogs.com/kerrycode/p/5079319.html

top  jobs命令查看后台运行任务
ss -ntl

用ss -ntl命令可以查看的服务端口是否已开启
ss -antulp | grep :6443

ss是Socket Statistics的缩写。ss命令用来显示处于活动状态的套接字信息。它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

SSH端口转发简介 隧道
https://www.shuzhiduo.com/A/6pdDBRvGJw/

curl

curl 发送 POST 请求的四种方式
https://blog.csdn.net/qq_21127151/article/details/109771595

curl ‐X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' ‐d '<BODY>'

4. curl -X POST --header "Content-Type:application/json" --data "{}" url
使用post模拟json格式请求接口,-X指定请求方式;--header 指定请求头部信息;--data 指定json请求体数据内容

6. curl -O url (下载文件,O大写)
curl -O http://man.linuxde.net/text.iso  #O大写,不用O只是打印内容不会下载

7. curl -o rename url (下载文件并重命名,o小写)
curl -o rename.iso http://man.linuxde.net/text.iso

curl -i www.baidu.com  #获取改网址的文本信息以及协议头部信息
curl -I www.baidu.com  #仅返回请求头部信息

#https
curl -k --insecure "https://www.baidu.com"
netstat

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

netstat -nat|grep -i "8095"|wc -l   #查看tcp连接数
ps aux|grep httpd |wc -l
TCP连接状态查询  https://blog.csdn.net/qq_35241329/article/details/120180618

ps -ef |grep mysqld 查看一个服务有几个端口
lsof -i :port,使用lsof -i :port就能看见所指定端口运行的程序,同时还有当前连接
netstat 参数说明:
-t : 指明显示TCP连接端口
-u : 指明显示UDP端口
-l : 列出正在网络监听的服务
-p : 显示进程标识符和程序名称。
-n : 表示以端口号来显示

netstat -ntlp  列出系统里面监听网络的TCP线程连接和相应的PID
netstat -ntulp |grep 80  查看所有80端口使用情况·
netstat -an | grep 3306  查看指定的端口号的进程情况
netstat -pnt |grep :3306 |wc 查看端口的连接数量
netstat -anp |grep 3306 查看某一端口的连接客户端IP
netstat -nupl  (UDP类型的端口)
netstat -ntpl  (TCP类型的端口)
netstat -anp 显示系统端口使用情况
查询CPU信息

Linux查看物理CPU个数、核数、逻辑CPU个数

#总核数 = 物理CPU个数 × 每颗物理CPU的核数
#总逻辑CPU数 = 物理CPU个数 × 每颗物理CPU的核数 × 超线程数

    1)cpu个数  cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
    2)cpu核数  cat /proc/cpuinfo | grep "cpu cores" | uniq
    2)  逻辑个数  cat /proc/cpuinfo| grep "processor"| wc -l
    3)cpu型号  cat /proc/cpuinfo | grep 'model name' |uniq
lsof

https://blog.csdn.net/FuTian0715/article/details/134779326

查看网速

tx rx

#安装网速查看插件
[root@iZ94qpwggofZ ~]#  yum  install -y  sysstat

[root@iZ94qpwggofZ ~]# sar -n DEV 1 100 
Linux 3.10.0-693.2.2.el7.x86_64 (iZ94qpwggofZ) 	11/02/2020 	_x86_64_	(2 CPU)

10:31:09 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
10:31:10 PM      eth0      2.00      2.00      0.12      1.74      0.00      0.00      0.00
10:31:10 PM      eth1    420.00    413.00     35.61     31.61      0.00      0.00      0.00
10:31:10 PM        lo     25.00     25.00      4.17      4.17      0.00      0.00      0.00

10:31:10 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
10:31:11 PM      eth0      1.00      1.00      0.07      0.05      0.00      0.00      0.00
10:31:11 PM      eth1    374.00    376.00     28.42     20.35      0.00      0.00      0.00
10:31:11 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

引入epel网源

[root@localhost yum]# vi /etc/yum.repos.d/epel.repo

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
# metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug
# metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS
# metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

第5章 Shell基本命令

5.3 浏览硬盘

fdisk -l 查看磁盘信息
df -h
lsblk

5.5.5 查看文本文件:cat和more

cat

# 排序、去重复
[root@node1 sdc]# cat file
aaa
bbb
aaa
bbb
[root@node1 sdc]# cat file |sort|uniq
aaa
bbb

more命令

more -5 /mnt/logs.log #将日志内容设置为每屏显示5行
more +/5800 logs.log
SPACE翻页、Enter查询下一行
cat test.log | more -5

tail

文件查看查找

显示含含单个关键字日志
tail -f /mnt/logs.log |grep 2201000008 #查询包含设备008的日志
显示包含多个关键字日志(或)
tail -f /mnt/logs.log |grep -E '2201000008|true' #查询含设备008或结果为true的信息记录
显示不包含多个关键字日志(非)
tail -f /mnt/logs.log |grep -Ev '(2201000007|787803D0|false)' 
显示多个关键字日志(且)
tail -f /mnt/logs.log |grep -E '2201000008.*78780308' #查询日志开头为2201000008并且结尾是78780308的记录

5.6 find命令

touch -t 1908010101  2019-08-01-01-01-00.txt

find /home/oracle/databak/ -type f -name "*.log" -mtime -1 -exec ls -l {} \;
find /home/oracle/databak/ -type f \( -newermt '2018-8-21 15:33' -a -not -newermt '2018-08-21 15:38' \)

sed

使用sed命令向文件中追加内容。
常用选项:
-n∶使用安静(silent)模式;
-e∶直接在指令列模式上进行 sed 的动作编辑;
-f∶直接将 sed 的动作写在一个档案内;
-r∶sed 的动作支援的是延伸型正规表示法的语法;
-i∶直接修改读取的档案内容,而不是由萤幕输出。

案例:把/etc/test1文件中1-10行内容写入到test2中
sed -n '1,10'p /etc/test1 >>test2

#将file1的1-10行追加到file2
sed命令行格式为:sed [-nefri] ‘command’ 输入文本

把hello这一行写入test文件的第3行
sed '3i\hello' test > tmp;mv -f tmp test
 
复制、清空文件

cat复制文件内容重定向到另一个文件中
cat a >> b #将b文件中的内容追加到a文件中的末尾
cat a > b #将b文件中的内容覆盖a文件内容

几种清空文件内容命令:
$> filename
$echo “” > filename
$cat /dev/null > filename
$cp /dev/null nohup.out

history

set +o history //设置命令不记录进history
set -o histoty //设置命令记录进history

第6章 文件目录管理

6.5 文件和目录的权限

vi vim命令
1.向下翻页快捷键(下一页):Ctrl + f
2.向上翻页快捷键(上一页):Ctrl + b

查找下一个,“n”(/database)
查找上一个 N?database)

根据行号来移动
Ctrl+g            显示当前行信息
nG                转至第n行
G                 转至文本末尾
gg           移至文本开头

#全局替换命令
:1,$s/6379/6380/g #把redis.conf文件中6379字母更换为6380

6.5.4 改变文件所有者:chown和chgrp

6.5.5 改变文件权限:chmod

Linux文件权限设置
chown oracle:oinstall /oracle/app/oracel/product/11.2.0/dbhome_1/bin/oracle 
cd /oracle/app/oracel/product/11.2.0/dbhome_1/bin/oracle
chmod 6751 oracle
chmod +s oracle


修改shell为可执行文件 chmod +x test2.sh
chmod 751 file #给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执

6.6 文件类型

6.6.1 查看文件类型

ls命令
ls-l/ls-ld 或者ll [ls-l —查看文件 ls-ld —查看路径 ll —-跟ls -l 一样]

file 命令
file a.text

stat 命令
stat a.txt #查看文件的详细属性(其中包括文件时间属性)

6.7 输入输出重定向和管道

nc localhost 6379
echo -e “set k2 99 \n incr k2 \n get k2” | nc localhost 6379

第8章 磁盘管理

swap分区

/dev/zero,是一个输入设备,你可你用它来初始化文件。该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。

增加swap分区文件大小
#第一步:创建一个大小为256M的文件:
dd if=/dev/zero of=/swapfile bs=1024 count=262144
#第二步:把这个文件变成swap文件:
mkswap /swapfile
#第三步:启用这个swap文件:
swapon /swapfile
#第四步:编辑/etc/fstab文件,使在每次开机时自动加载swap文件:
/swapfile    swap    swap    default   0 0

当Linux的物理内存快要被耗尽时,系统会把一些进程占用的内存转移到 swap 区,当物理内存被释放一部分时,swap 区的一些内存占用又慢慢回到 mem 区,但是 mem 区却不再是之前的满负荷状态,而是有一部分 free 的内存!
【总结】
1)当物理内存快被耗尽时,系统并没有崩溃,而是拿 swap 做临时内存,当两者都耗尽,系统 OutofMemory
2)物理内存达到峰值,系统中一些不常用的进程内存占用被提到 swap 区
3)当 Men 区的资源进行释放时,被挪到 swap 的内存并不会全部回来,随着系统或者程序的唤醒才会慢慢回到 men 区
4)swap 是内存不够时,磁盘虚拟出来的内存,磁盘主要是 I/O 级别的操作,并不是系统内核级别的操作,处理速度跟 mem 区不是一个等级

创建swapfile文件 https://www.cnblogs.com/classics/p/11512709.html
给Linux分配多少Swap空间才够呢?https://www.jianshu.com/p/12e25ea172de
手动释放Linux上的Swap、Buffer和Cache https://www.linuxprobe.com/free-swap-buffer.html

虚拟内存技术还可以用于SWAP。在Linux操作系统中,可以使用SWAP分区,在物理内存不足时,将暂时不用的内存数据先放到磁盘上,让有需要的进程先使用。这样,就可以让系统更加高效地利用内存资源。当需要使用被SWAP到磁盘上的内存数据时,系统会将其读取回物理内存中,这个过程称为“换页”。虚拟内存技术的使用使得这个过程更加高效,可以避免频繁换页,提高系统的性能。

mount 磁盘挂载
fdisk -l 查看磁盘信息
df -h
lsblk

mkdir sdb sdc
mount /dev/sdb  /sdb
mount /dev/sdc  /sdc

# 新盘挂载
[root@node1 sdc]# mount -o rw /dev/sdc1 /sdc
mount: /dev/sdc1 写保护,将以只读方式挂载
mount: 未知的文件系统类型“(null)...
[root@node1 sdc]# mkfs.ext4 /dev/sdc1
回车完成后继续执行

du命令

du命令:查看目录和文件的磁盘占用情况

du -sh /home/zhubao #查看指定目录的磁盘占用情况

#查看当前目录下的所有一级子目录和文件的磁盘使用情况:
du -sh *
-s或–summarize 仅显示总计,即当前目录的大小。
-h或–human-readable 以K,M,G为单位,提高信息的可读性;
iostat

iostat 查看磁盘IO使用情况

[root@localhost /]# iostat -x 1  #1表示1秒刷新一次
Linux 5.10.23-5.al8.x86_64 (iZwz9cs3943soq9j2lx3n3Z) 	11/20/2021 	_x86_64_	(8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          51.06    0.00    1.85    0.16    0.00   46.93

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
vda              0.35   75.31     22.54    798.30     0.09    38.00  20.37  33.54    1.79    0.93   0.07    64.31    10.60   0.49   3.70

第10章 进程管理

# 杀掉进程 脚本
cat /root/tomcat/killproc.sh
sp_pid=`ps -ef | grep sp-tomcat | grep -v grep | awk '{print $2}'`
if [ -z "$sp_pid" ];
then
 echo "[ not find sp-tomcat pid ]"
else
 echo "find result: $sp_pid "
 kill -9 $sp_pid
fi

(转)注意:使用时,需要把第一行的 sp-tomcat 替换换成你希望杀的进程名称
说明:可能有人会说查找进程出现多个进程id时,脚本会报错的。其实是不会的,出现多个进程id时,他们之间是有空格隔开来了的。刚好kill命令一次杀多个进程时,进程id需要用空格。所以不需要用for循环来杀进程

shell tail -f如何自动终止
https://zhidao.baidu.com/question/689347187421702724.html

这个命令用到了进程替换(bash相关),和遇到错误停止(凡是脚本都应该用),所以脚本开头是这两行 
#!/bin/bash
set -euxo pipefail
并且执行这个脚本也得用 bash xxxx.sh,虽然CentOS里 sh 是 bash 的软链,但也不能用 sh,得用 bash

批量删除进程(脚本)
tail_pid=`ps -ef | grep "www-data" | grep -v grep | awk '{print $2}'`
if [ -z "$tail_pid" ]; then
 echo "[ not find tail log pid ]"
else
 echo "find result: $tail_pid"
 kill -9 $tail_pid
fi

定时任务

-e:编辑该用户的计时器设置;
-l:列出该用户的计时器设置;
-r:删除该用户的计时器设置;
-u<用户名称>:指定要设定计时器的用户名称。

JAR

ps aux|grep lydPrd.jar #查看jar的进程信息

一条命令杀掉linux的jar进程
ps -ef | grep hello.jar | grep -v grep | awk ‘{print $2}’ | xargs kill -9

Linux后台运行jar包
nohup java -jar /usr/javaServer/lydPrd.jar > /mnt/logs.log &

nohup.out,如果文件过大,可在不停止jar包的情况下清空日志文件:用命令 cp /dev/null nohup.out 清空文件

第3篇 网络篇

第11章 网络配置

ifconfig
# eth0
eth0,eth1,eth2,代表网卡一,网卡二,网卡三
hw 代表hardware 硬件意思
ether 代表ethernet 以太网的意思

第14章 传输文件 scp

Windows与Linux的scp命令上传与下载文件(防火墙问题)
eclipse编译后直接把war文件发布到Linux的Tomcat服务webapp目录下自动进行发布

Windows下载 pscp.exe

tar

tar -czf file.log.tar.gz file.log
tar -xzvf file.log.tar.gz

#这五个是独立的命令,压缩解压都要用到其中一个。
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

#下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出

-f: 使用档案名字(必输)

gzip
#生成压缩文件后自动删除源文件;同理解压
gzip proxy.log
gunzip proxy.log
#生成压缩文件后保留源文件
gzip -c proxy.log.20191216 > proxy.log.20191216.gz 

gzip -d 命令不会打包目录,而是把目录下所有的子文件分别压缩

zip unzip

yum install -y unzip zip

使用systemctl管理服务

systemctl 是系统服务管理器命令,是service和chkconfig这两个命令的整合,在CentOS 7就开始被使用了。
systemd有系统和用户区分:/user/lib/systemd/system/ 和 /etc/lib/systemd/user/
一般系统管理员手工创建的单元文件建议存放在/etc/systemd/system/目录下面。

[Unit]    # 服务说明
Description:  服务描述
After:  描述服务类别

[Service] # 服务运行参数的设置
WorkingDirectory=/path  设置应用的工作目录
Type=forking  是后台运行的形式
ExecStart=   服务的具体运行命令
ExecReload=   重启命令
ExecStop=   停止命令
PrivateTmp=True  是否给服务分配独立的temp空间

[Install] #服务安装的相关设置,可设置为多用户
WantedBy=

注:启动、重启、停止命令全部要求使用绝对路径

五 程序开发篇

shell

sh(全称 Bourne Shell): 是UNIX最初使用的 shell,而且在每种 UNIX 上都可以使用。
bash(全称 Bourne Again Shell): LinuxOS 默认的,它是 Bourne Shell 的扩展。

第一个bash脚本:

#!/bin/bash
echo "Hello World !"

注:#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序

运行 Shell 脚本有两种方法:
1.作为可执行程序:./test.sh #使脚本具有执行权限
2.作为解释器参数:/bin/sh test.sh #直接运行解释器,其参数是 shell 脚本的文件名

变量

变量名称:
1、只能包含字母、数字和下划线,并且不能数字开头;
2、不应该跟系统中已有的环境变量重名;
3、最好做到见名知义;
注意:等号两边不要空格,要紧贴着。

条件判断

整数比较 eq、ne、gt、lt、ge、le
-eq(equal) 相等
-ne(inequality) 不相等
-gt(greater than) 大于
-lt(less than) 小于
-ge(greater equal) 大于或等于
-le(less equal) 小于或等于

字符串匹配
if [ `echo $str | grep -e regexp` ]; then

命令间的逻辑关系:
逻辑与: &&
逻辑或: ||

脚本

Linux if 判断文件是否为空

#使用的命令是 -s filename
-s filename  #如果文件大小大于0,则返回true。

# cat is_Empyt.sh 
#! /bin/bash
if [ -s ./myfile.txt ] ; then 
  echo 'ths file is not empyt and file info:'
  du -sh myfile.txt  #打印文件大小
else
  echo 'empty!'
fi

方法2:[[ `cat a.log |wc -l` -eq 0 ]] && echo "file is empty"

linux if 命令判断条件总结
https://www.cnblogs.com/TikyZheng/p/3352208.html

时间

在给服务器CMOS放过一次电后,时间就被初始化了,在修改时间的时候,发现date和clock显示的时间不一样,是因为没有同步。
使用“date -s”命令来修改系统时间:

[root@node1 ~]# echo `date +"%Y-%m-%d-%H:%M:%S"`  
2019-12-17-11:53:26
[root@node1 ~]# date +%F
2019-12-17
[root@node1 ~]# date +%y%m%d
2019-12-17

Linux shell编程区分时间段 case+if+比较
http://blog.itpub.net/29500582/viewspace-1101270/

系统时间
修改linux时间和日期,date和clock的同步。

1、只修改日期:date -s 2007-08-03
2、只修改时间:date -s 14:15:00
3、同时修改日期和时间:date -s "2007-08-03 14:15:00"  
修改后把系统时间写入CMOS:clock -w
[root@localhost ~]# clock -w

时区

#输出系统时间概览,其中包含当前时区:

#使用 timedatectl 来设置 Linux 时区
[root@localhost ~]# timedatectl 
修改时区不重启:复制相应的时区文件,替换系统时区文件:
[root@centos7 ~]# ll /etc/localtime 
lrwxrwxrwx 1 root root 33 Oct 12 11:01 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai

把美国的时区文件内容修改成了上海的时区
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai 
或者直接手动创建软链接
[root@localhost ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

route 路由

从一个房间走到另一个房间,必然要经过一扇门。同样,从一个网络向另一个网络发送信息,也必须经过一道“关口”,这道关口就是网关。网关(Gateway)就是一个网络连接到另一个网络的“关口”。也就是网络关卡。
假设你的名字叫小不点,你住在一个院子里,你的邻居有很多小伙伴,父母是你的网关。当你想跟院子里的某个小伙伴玩。但是你家长不允许你走出大门,你想与外界发生的一切联系,都必须由父母(网关)用电话帮助你联系。假如你想找你的同学小明聊天,小明家住在很远的另外一个院子里,他家里也有父母(小明的网关)。你不知道小明家的电话号码,不过你的班主任有一份你们班全体同学的名单和电话号码对照表,你的老师就是你的DNS服务器。
于是你在家里和父母有了下面的对话:
小不点:妈妈我想找班主任查一下小明的电话号码?家长:好,你等着。(接着你家长给你的班主任打了一个电话,问清楚了小明的电话)问到了,他家的号码是211.99.99.99
小不点:太好了!妈我想找小明,你再帮我联系一下小明吧。
家长:没问题。(接着家长向电话局发出了请求接通小明家电话的请求,最后一关当然是被转接到了小明家家长那里,然后他家长把电话给转到小明)。
就这样你和小明取得了联系。

route

eth0,eth1,eth2,代表网卡一,网卡二,网卡三
hw 代表hardware 硬件意思
ether 代表ethernet 以太网的意思

//添加到主机的路由 
route add –host 192.168.1.11 dev eth0 
route add –host 192.168.1.12 gw 192.168.1.1 

//添加到网络的路由 
route add –net 192.168.1.11  netmask 255.255.255.0 eth0 
route add –net 192.168.1.11  netmask 255.255.255.0 gw 192.168.1.1 
route add –net 192.168.1.0/24 eth1 

//添加默认网关 
route add default gw 192.168.2.1 

删除路由
route del –host 192.168.1.11 dev eth0
route del default gw 192.168.2.1 

二:在linux下设置永久路由的方法:

1.在/etc/rc.local里添加 
route add -net 192.168.3.0/24 dev eth0 
route add -net 192.168.2.0/24 gw 192.168.2.254 
2.在/etc/sysconfig/network里添加到末尾 (没试过不知道)
方法:GATEWAY=gw-ip 或者 GATEWAY=gw-dev 
3./etc/sysconfig/static-routes : (没有static-routes的话就手动建立一个这样的文件) 
any net 192.168.3.0/24 gw 192.168.3.254 
any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129 
4.开启 IP 转发: (没试过不知道)
echo "1" >/proc/sys/net/ipv4/ip_forward (临时) 
vi /etc/sysctl.conf --> net.ipv4.ip_forward=1 (永久开启) 

https://www.cnblogs.com/chjbbs/p/6373058.html

metric:为路由指定所需跃点数的整数值(范围是 1 ~ 9999),它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理。

Flags:总共有多个旗标,代表的意义如下:

U (route is up):该路由是有效的;
H (target is a host):目标是一部主机 (IP) 而非网域;
G (use gateway):需要透过外部的主机 (gateway) 来转递封包(一般指向默认网关);
R (reinstate route for dynamic routing):使用动态路由时,恢复路由资讯的旗标;
D (dynamically installed by daemon or redirect):已经由服务或转 port 功能设定为动态路由
M (modified from routing daemon or redirect):路由已经被修改了;
! (reject route):这个路由将不会被接受(用来抵挡不安全的网域!)

https://blog.csdn.net/zhangxueleishamo/article/details/80106970

关闭防火墙

临时关闭防火墙:
[root@localhost ~]# getenforce
Enforcing
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive

永久关闭:
[root@localhost ~]# vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled
重启服务reboot

systemctl stop firewalld.service #关闭防火墙

防火墙(firewalld与iptables)
https://blog.csdn.net/weixin_40658000/article/details/78708375

linux防火墙查看状态firewall、iptable
https://www.cnblogs.com/zxg-blog/p/9835263.html
iptables

iptables -nL 查看iptables列表

iptables和firewalld的区别

1.相同点:
firewalld 与 iptables 都是 linux 中防火墙的管理程序,但其实其角色主要为对于防火墙策略的管理,真正的防火墙执行者是位于内核中的netfilter。
2.不同点:
a) iptables 仅能通过命令行进行配置;而 firewalld 提供了图形接口,类似windows防火墙的操作方式。
b) iptables 每一个单独更改意味着清除所有旧的规则,并从 /etc/sysconfig/iptables 中读取所有新的规则;而 firewalld 在有规则变动后,可以仅仅运行规则中的不同之处,即在 firewalld 运行时间内,改变设置时可以不丢失现行链接。
c) iptables 的配置文件在 /etc/sysconfig/iptables 中;而 firewalld 的配置文件在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件中。
d) iptables 没有守护进程,并不能算是真正意义上的服务;而 firewalld 有守护进程;
f) iptables 通过控制端口来控制服务,而 firewalld 则是通过控制协议来控制端口。
链接:https://blog.csdn.net/weixin_61200840/article/details/121713157

cron

crontab不是Linux内核的功能,而是依赖一个crond服务。如果停止了就无法执行任何定时任务了,解决的方法是打开它:crond 或 service crond start

其他

Linux远程管理协议(RFB、RDP、Telnet和SSH)
Linux远程管理工具(PuTTY和SecureCRT)

screen

screen命令详解
https://blog.csdn.net/lykangjia/article/details/17717065

top
top指令 https://www.cnblogs.com/zhoug2020/p/6336453.html
PID:进程ID,进程的唯一标识符
USER:进程所有者的实际用户名。
PR:进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。
NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR:SHR是进程使用的共享内存。共享内存大小,单位kb
S:这个是进程的状态。它有以下不同的值: D - 不可中断的睡眠态。R – 运行态  S – 睡眠态  T – 被跟踪或已停止  Z – 僵尸态
%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。
%MEM:进程使用的可用物理内存百分比。
TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。
COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)
vmstat 监控系统资源

vmstat 2 是用来实时查看内存使用情况,反映的情况比用top直观一些

日志(未加入到目录)

linux系统文件通常在/var/log中下面是对下面常出现的文件进行解释
/var/log/message ---------------------------------------系统启动后的信息和错误日志

/var/log/secure ------------------------------------------与安全相关的日志信息

/var/log/maillog ------------------------------------------与邮件相关的日志信息

/var/log/cron ----------------------------------------------与定时任务相关的日志信息

/var/log/spooler ------------------------------------------与UUCP和news设备相关的日志信息

/var/log/boot.log -----------------------------------------守护进程启动和停止相关的日志消息

/var/log/wtmp ---------------------------------------------永久记录每个用户登录、注销及系统的启动、停机的事件

/var/run/utmp ---------------------------------------------记录当前正在登录系统的用户信息;

/var/log/btmp ----------------------------------------------记录失败的登录尝试信息。

参考资料

Linux 命令大全 https://www.cnblogs.com/machangwei-8/p/9299013.html
linux和gcc的介绍 https://blog.csdn.net/nuaadot/article/details/78301855
Linux 系统结构详解 https://mp.weixin.qq.com/s/dRTqre3fAo6ai-ETeJnINA

目录

《Linux从入门到精通》

第1篇 基础篇
第1章 Linux概述 2
第2章 Linux安装 11
2.1 安装前的准备工作 11
2.1.1 下载Linux
2.1.2 硬件要求 11
2.1.4 虚拟机的使用
2.2 安装Linux至硬盘 14
2.2.1 第一步:从光驱启动 14
2.2.2 关于硬盘分区

第3章 Linux基本配置 26
3.1 超级用户root 26
3.1.1 root可以做什么 26
3.1.2 避免灾难 27
3.1.3 Debian和Ubuntu的root用户 27
3.2 依赖于发行版本的系统管理工具 28
3.3 中文支持 29
3.4 关于硬件驱动程序 30
3.5 获得更新 31
3.6 进阶:配置Grub 31

第4章 桌面环境 35
4.3.2 X窗口系统的基本组成 44
4.3.3 X系统的启动过程 45
4.3.4 启动X应用程序 45
4.3.5 桌面环境:KDE和Gnome谁更好 46
4.4 进阶2:配置X服务器 47
4.4.1 理解配置文件 47
4.4.2 配置显卡和显示器 48

# 第2篇 系统管理篇
第5章 Shell基本命令 52
5.1 Shell简介 52
5.3 快速上手:浏览你的硬盘 53
5.4 提高效率:使用命令行补全和通配符 54
5.5 查看目录和文件 56
5.5.1 显示当前目录:pwd 56
5.5.2 改变目录:cd
5.5.3 列出目录内容:ls
5.5.4 列出目录内容:dir和vdir
5.5.5 查看文本文件:cat和more
5.5.6 阅读文件的开头和结尾:head和tail
5.5.7 更好的文本阅读工具:less 61
5.5.8 查找文件内容:grep 62
5.6 find命令——我的东西在哪
5.7 更快速地定位文件——locate命令 64
5.8 从终端运行程序 65
5.9 查找特定程序:whereis 65
5.10 用户及版本信息查看 65
5.11 寻求帮助——man命令 66
5.12 获取命令简介:whatis和apropos 67

第6章 文件目录管理 69
6.1 Linux文件系统的架构 69
6.2 共享文件 70
6.3 建立文件 touch 和目录 mkdir 
6.4 移动、复制和删除 mv  cp rmdir和rm
6.5 文件和目录的权限 75
6.5.1 权限设置针对的用户 75
6.5.2 需要设置哪些权限 76
6.5.3 查看文件和目录的属性 76
6.5.4 改变文件所有者:chown和chgrp 77
6.5.5 改变文件权限:chmod 78
6.5.6 文件权限的八进制表示 79
6.6 文件类型 79
6.6.1 查看文件类型 80
6.6.2 建立链接:ln 80
6.7 输入输出重定向和管道 82

第7章 软件包管理 86
7.4 管理RPM软件包:rpm 安装 升级 查看 卸载 高级软件包工具

第8章 磁盘管理
第9章 用户与用户组管理
第10章 进程管理

第3篇 网络篇
第11章 网络配置
第12章 浏览网页
第13章 收发邮件
第14章 传输文件
第15章 远程登录
第4篇 娱乐与办公篇
第16章 多媒体
第17章 图像
第18章 打印机配置
第19章 办公软件的使用
第5篇 程序开发篇
第6篇 服务器配置篇
第7篇 系统安全篇

删除恶意脚本文件newinit.sh

删除恶意脚本文件,直接rm删除不了,需要修改下文件的属性

cd /etc/
rm -f newinit.sh #提示无权限Permission denied
#查看文件属性
lsattr newinit.sh
#修改文件属性
chattr -ia newinit.sh

#修改文件属性
[root@localhost etc]# lsattr newinit.sh
----ia--------e----- newinit.sh

[root@c7 bin]# cd /usr/bin/
[root@c7 bin]# cp chattr chattr.new
[root@c7 bin]# chmod a+x chattr.new
[root@c7 bin]# chattr.new -i chattr
[root@c7 bin]# rm -f chattr.new
[root@c7 bin]# chmod a+x chattr

[root@localhost bin]# /usr/bin/chattr.new -ia /etc/newinit.sh
[root@localhost bin]# rm -rf /etc/newinit.sh
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值