0%

https://github.com/fffonion/cloudflare-partner-cli Cloudflare Partner CLI

使用Cloudflare partner功能用CNAME方式接入cloudflare。

如需使用中文菜单,请将环境变量的LANG设置为使用UTF-8 (比如zh_CN.UTF-8)。

使用方法

源站地址(resolve_to)必须填写完整的dns,如google.com,不能填写ip

简介

BBR相信大家都不陌生,是谷歌开发的一个存在于Linux内核中的拥塞算法。为了优化国内与服务器之间的网络质量,loc的大佬专门魔改改进了下这个BBR,成为了新的BBR魔改版。我也就乘机水一篇文章好了在Debian 8 和Ubuntu16 + 系统上一键部署魔改版BBR,自动换内核成 4.10.15 ,自动安装Headers。用户只需要将系统安装成 Debian 8 或者 Ubuntu 16 即可,剩下的交给脚本来吧。据说效果比原版BBR和锐速都要好哦

Github地址:https://github.com/FunctionClub/YankeeBBR

魔改版BBR一键脚本 For Debian8/Ubuntu16+

参考资料

魔改BBR原帖:http://www.hostloc.com/thread-372277-1-2.html

萌新教程: http://www.hostloc.com/thread-372335-1-1.html

脚本技术: https://doub.io/wlzy-16/

部分商家的VPS可能会遇到换内核之后无法启动系统的情况,所以请运行脚本前一定要备份好重要数据!!

安装脚本

1
wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/YankeeBBR/master/bbr.sh && bash bbr.sh install

安装过程中如果出现这张图片,请选择NO 来删除其他内核:

魔改版BBR一键脚本 For Debian8/Ubuntu16+

然后根据提示重启系统。 重启完成后,运行

1
bash bbr.sh start

即可启动魔改版BBR

查看魔改BBR状态

1
sysctl net.ipv4.tcp_available_congestion_control

如果看到有 tsunami 就表示开启成功!

魔改版BBR一键脚本 For Debian8/Ubuntu16+

前段时间BBR出世后,很多人都去尝鲜了,有的人觉得比锐速加速效果好,有的觉得不如锐速,总之加速效果不同因素影响都不同。

而因为BBR是集成于内核中的一个功能,所以 卸载BBR=更换内核 ,但是很多人不知道怎么更换,一般都是直接重装系统,以回到支持安装锐速的内核版本,今天有人问我了,于是我就简单研究研究写个手动教程好,并不难。


测试环境

Debian 7 x64 和 Ubuntu 14.04 系统,当前内核为 v4.10.1 (支持BBR的最新稳定版内核) 测试通过,Debian 8 暂时没测试(应该差不多的)。

至于其他系统,步骤就完全不一样了,所以不做测试。

OpenVZ不支持更换内核,不支持 锐速和BBR,所以请不要尝试下面的步骤,否则后果自负!

Debian的准备工作(Ubuntu请跳过)

添加软件包源并更新包列表

  1. echo -e “\ndeb http://ftp.debian.org/debian/ wheezy-backports main” >> /etc/apt/sources.list
  2. apt-get update

安装内核

查询可用内核列表

1
aptitude search linux-image  awk '{print $2}'

执行代码后可以看到很多内核版本,Debian 7 x64 系统选择 linux-image-3.2.0-4-amd64 内核,这个内核大部分 Debian 7 系统都是使用,完美支持锐速和LotServer。而Ubuntu 14.04 则选择 linux-image-3.13.0-32-generic 内核。

锐速支持的内核看这里:传送门

Debian和Ubuntu唯一的区别就是这里提示的内核名称不一样,和下面安装内核用的命令略有区别,其他都通用!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# VPS提示示例/64位 #
# Debian 7 和 8 可能不一样,还有 64位和32位 内容也不一样。
 
root@debian:~# aptitude search linux-image awk '{print $2}'
linux-image
linux-image-2.6-amd64
linux-image-3.16.0-0.bpo.4-amd64
linux-image-3.16.0-0.bpo.4-amd64-dbg
linux-image-3.2.0-4-amd64
linux-image-3.2.0-4-amd64-dbg
linux-image-3.2.0-4-rt-amd64
linux-image-3.2.0-4-rt-amd64-dbg
linux-image-4.10.1-041001-generic
 
# Ubuntu 14.04 提示内容 #
...
linux-image-3.13.0-32-generic
linux-image-3.13.0-32-generic:i386
linux-image-3.13.0-32-lowlatency
linux-image-3.13.0-32-lowlatency
...
# 多余的我都省略了,写出来意义不大 #

Debian 安装内核

1
2
3
# 示例 #
apt-get -t wheezy-backports install linux-image-3.2.0-4-amd64 -y
# 示例 #

Ubuntu 安装内核

1
2
3
# 示例 #
apt-get install linux-image-3.13.0-32-generic -y
# 示例 #

卸载内核

查看当前系统所有内核

1
2
3
4
5
6
7
8
9
10
11
dpkg -lgrep linux-image  awk '{print $2}'
# VPS提示示例/64位 #
# Debian 7 和 8 可能不一样,还有 64位和32位 内容也不一样。
 
root@debian:~# dpkg -lgrep linux-image awk '{print $2}'
linux-image-3.2.0-4-amd64
linux-image-4.10.1-041001-generic
 
# Ubuntu 14.04 提示内容 #
linux-image-3.13.0-32-generic
linux-image-4.10.1-041001-generic

卸载其余内核

1
apt-get purge 其余内核名称 -y

从上面示例中可以看到,除了刚才安装的 linux-image-3.2.0-4-amd64 内核外,还剩下一个内核 linux-image-4.10.1-041001-generic ,我们需要卸载这个内核:

1
2
3
# 示例 #
apt-get purge linux-image-4.10.1-041001-generic -y
# 示例 #

结尾工作

关闭 BBR(如有)

1
2
3
sed -i '/net\.core\.default_qdisc=fq/d' /etc/sysctl.conf && sed -i '/net\.ipv4\.tcp_congestion_control=bbr/d' /etc/sysctl.conf
sysctl -p
# 清除BBR启动代码并保存,执行并不会提示任何信息。

更新 grub 系统引导文件并重启VPS

1
2
3
update-grub
# reboot是重启服务器
reboot

如果有什么问题请在下面告诉我。

最近见一些人买了 128MB小内存的KVM小鸡想要安装锐速,但是老是提示内存不足,或者运行ShadowsocksR服务端老被系统Kill,那么可以适当的添加一些虚拟内存,以避免内存不足的问题。


SWAP简单介绍

Linux的内存分为 物理内存 和 虚拟内存,虚拟内存(SWAP)也叫交换区、交换分区等。

当运行程序,产生进程时。系统会判断当前物理内存是否还有空闲内存 以允许进程调入内存运行,如果有那么 则直接调入内存进行运行;如果没有,那么会根据优先级选择一个进程挂起,把该进程交换到SWAP中等待,然后把新的进程调入到内存中运行。

根据这种换入和换出,实现了内存的循环利用,让用户感觉不到内存的限制。从这也可以看出SWAP扮演了一个非常重要的角色,就是暂存被换出的进程。


当物理内存使用完或者达到一定比例之后,系统会自动使用SWAP做临时的内存使用。当物理内存和SWAP都被使用完那么就会出错:out of memory

对于使用多大比例物理内存之后开始使用SWAP,在系统的配置文件中可以通过调整参数进行修改。

1
cat  /proc/sys/vm/swappiness

默认是 60 ,一般不需要更改,当数值为 0 的时候,就会尽量使用物理内存直到用完才会使用SWAP,当数值为100 的时候,就会尽量使用SWAP。


SWAP是从硬盘中虚拟出来的,所以速度由硬盘的读写速度决定,如果你的Linux服务器IO很低,硬盘是 HDD或者石头盘 钻石盘,那么效果会很差。

如果你的VPS没有SWAP,那么添加一些可能会提高性能,但不建议添加太多,否则也是浪费,而且SWAP始终是硬盘虚拟的,比不上物理内存。


准备工作

注意:只有虚拟化构架为XEN、KVM、VM-Ware的VPS可以自己添加SWAP,OpenVZ不支持添加SWAP!

root 账号

添加SWAP操作,必须是 root 用户才可以操作,所以请用 root 账号登陆服务器或者切换为 root 用户:

1
su

输入执行后,会提示你输入 root 账号的密码,输入正确密码并回车后,没有报错那么就可以继续下面的步骤了。

检查硬盘大小

因为SWAP是在硬盘中建立一个交换区文件,所以需要磁盘中最少有 这个文件大小 的空闲空间。

输入执行这个命令,即可看到你的VPS当前磁盘大小和使用情况:

1
df -m

从下面的示例中可以看到,这个VPS大概有 15GB的硬盘大小(14621 MB),用了 1GB(1117 MB),剩下12.5GB(12763 MB)大小。

既然硬盘大小充足,那就可以继续下面步骤了。

1
2
3
4
5
6
7
8
9
10
11
# VPS示例提示 #
# 下列参数表头分别为:文件系统、总大小(单位MB)、已用大小(单位MB)、未用大小(单位MB)、使用率(%)、挂载点
root@doub.io:~# df -m
Filesystem 1M-blocks Used Available Use% Mounted on
rootfs 14621 1117 12763 9% /
udev 10 0 10 0% /dev
tmpfs 50 1 50 1% /run
/dev/disk/by-uuid/12dc23 14621 1117 12763 9% /
tmpfs 5 0 5 0% /run/lock
tmpfs 202 0 202 0% /run/shm
# VPS示例提示 #

添加交换区SWAP

查看 当前SWAP大小

我们可以先查看一下当前的SWAP大小(单位 MB)。

1
2
3
4
5
6
7
8
free -m
# VPS示例提示 #
root@doub.io:~# free -m
total used free shared buffers cached
Mem: 244 141 103 0 38 76
-/+ buffers/cache: 26 218
Swap: 127 0 127
# VPS示例提示 #

创建 SWAP文件

从上面的VPS示例中可以看到,这个VPS物理内存约等于 256MB,所以可以添加 物理内存*2的SWAP=512MB 。

bs 是字节数,这里是1024 B,count 是blocks块数,of 是要输出的SWAP交换区文件(本文章仅为示例,文件和位置可以自己改)

所以: bs=1024 B=1 KB,512000 * 1 KB=512000 KB / 1024 ≈ 512 MB (为了直观的看,就按1000来算了 :lol:

1
dd if=/dev/zero of=/var/swapfile1 bs=1024 count=512000
1
2
3
4
5
6
# VPS示例提示 #
root@doub.io:~# dd if=/dev/zero of=/var/swapfile1 bs=1024 count=512000
512000+0 records in
512000+0 records out
524288000 bytes (524 MB) copied, 4.09314 s, 128 MB/s
# VPS示例提示 #

查看文件是否创建成功,大小是否正确(因为按1000计算,所以会不足 512MB)

1
2
3
4
du -ah /vargrep "swapfile1"
# VPS示例提示 #
root@doub.io:~# du -ah /vargrep "swapfile1"
501M/var/swapfile1

建立 SWAP文件

1
mkswap /var/swapfile1
1
2
3
4
5
# VPS示例提示 #
root@doub.io:~# mkswap /var/swapfile1
Setting up swapspace version 1, size = 511996 KiB
no label, UUID=c48fef60-7d49-450c-bfd1-7a7826de7cdd
# VPS示例提示 #

启用 SWAP文件

1
swapon /var/swapfile1

启用 SWAP文件没有任何提示,启用后我们查看一下是否正常启用:

1
2
swapon -s
free -m

可以看到下面的SWAP中,成功添加启用了一个 SWAP交换区。

1
2
3
4
5
6
7
8
9
10
11
12
# VPS示例提示 #
root@doub.io:~# swapon -s
FilenameTypeSizeUsedPriority
/dev/vda2 partition1310680-1
/var/swapfile1 file5119960-2
 
root@doub.io:~# free -m
total used free shared buffers cached
Mem: 244 240 4 0 34 175
-/+ buffers/cache: 30 214
Swap: 627 0 627
# VPS示例提示 #

开机启动加载

1
echo "/var/swapfile1 swap swap defaults 0 0" >> /etc/fstab

如果你又不想要刚才新添加的SWAP了,那么可以取消它们。

取消 SWAP文件

1
swapoff /var/swapfile1

取消 开机启动加载

1
sed -i "/swapfile1/d" /etc/fstab

取消后,可以再 free -m 查看一下SWAP,确定取消了,那么就可以删除 SWAP文件了。

删除 SWAP文件

1
rm -rf /var/swapfile1

有什么问题请在下面留言!

安装步骤

注意

如果有单独数据盘,建议您先挂载数据盘,建议将网站内容、数据库放在数据盘中。如何挂载数据盘,请参考(支持阿里云、腾讯云):《如何利用脚本自动化挂载数据盘?

yum -y install wget screen curl python #for CentOS/Redhat

apt-get -y install wget screen curl python #for Debian/Ubuntu

wget http://aliyun-oss.linuxeye.com/oneinstack-full.tar.gz #阿里云经典网络下载
wget http://mirrors.linuxeye.com/oneinstack-full.tar.gz #包含源码,国内外均可下载
wget http://mirrors.linuxeye.com/oneinstack.tar.gz #不包含源码,建议仅国外主机下载
tar xzf oneinstack-full.tar.gz
cd oneinstack #如果需要修改目录(安装、数据存储、Nginx日志),请修改options.conf文件
screen -S oneinstack #如果网路出现中断,可以执行命令`screen -R oneinstack`重新连接安装窗口
./install.sh #注:请勿sh install.sh或者bash install.sh这样执行

如何添加附加组件?

./addons.sh

如何添加虚拟主机?

./vhost.sh

如何删除虚拟主机?

./vhost.sh del

如何管理FTP账号?

./pureftpd_vhost.sh

如何备份?

./backup_setup.sh # Set backup options

./backup.sh # Start backup, You can add cron jobs

crontab -l # Examples

 0 1 \* \* \* cd ~/oneinstack;./backup.sh  > /dev/null 2>&1 &

如何管理服务?

Nginx/Tengine/OpenResty:

service nginx {startstopstatusrestartreloadconfigtest}

MySQL/MariaDB/Percona:

service mysqld {startstoprestartreloadstatus}

PHP:

service php-fpm {startstoprestartreloadstatus}

HHVM:

service supervisord {startstopstatusrestartreload}

:hhvm进程交给supervisord管理,了解更多请访问《Supervisor管理hhvm进程》 Apache:

service httpd {startrestartstop}

Tomcat:

service tomcat {startstopstatusrestart}

Pure-Ftpd:

service pureftpd {startstoprestartstatus}

Redis:

service redis-server {startstopstatusrestartreload}

Memcached:

service memcached {startstopstatusrestartreload}

如何更新版本?

./upgrade.sh

如何卸载?

./uninstall.sh

本文由@Michael发布

本文由 91yunbbs 用户 locknlock 投稿。讨论、提问建议前往论坛:【 论坛原文链接

前方深坑预警

本文仅做抛砖引玉,供读者举一反三。

提前说一下编译安装 PCC 可能有的坑:

  • 当前内核版本的 header 没装。
  • gcc 版本过低。
  • gcc 强行把 warn 当 error 来处理,即 werror 。
  • PCC 代码年久失修, Linux 内核升级后改了部分代码导致 tcp_TA.c 内某些引用出错。
  • 直接使用 insmod 动态加载的模块在重启后不会自动加载,需要再次 insmod 一次,可以百度找解决方法。
  • 可能还有更多编译坑。
  • 没事还是用 bbr ,毕竟有一键安装脚本。

编译安装 PCC

PCC is a new approach for TCP congestion control base on real-time performance analysis. This is a kernel implementation of it.

PCC 和 BBR 一样都是一直 TCP 拥塞控制算法,就目前我自己做的测试( ipv6 环境)来看,效果不差。下面介绍如何在 Linux 下开启 PPC 。

安装环境:

  • Ubuntu 14.04.5 LTS x86_64
  • kernel version 4.9.0-040900-generic
  • gcc version 4.9.4

升级 kernel 为 4.9 ,需要同时安装 image 和 header ,其他版本 kernel 一样,必须安装 header 。

1
2
3
4
5
6
7
8
9
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9/linux-image-4.9.0-040900-generic_4.9.0-040900.201612111631_amd64.deb
 
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9/linux-headers-4.9.0-040900-generic_4.9.0-040900.201612111631_amd64.deb
 
dpkg -i linux-image-4.9.0-040900-generic_4.9.0-040900.201612111631_amd64.deb
 
dpkg -i linux-headers-4.9.0-040900-generic_4.9.0-040900.201612111631_amd64.deb
 
reboot

安装编译工具

1
2
3
apt-get install build-essential -y
 
gcc -v

如果默认安装的 gcc 版本低于 4.9 ,按照下面操作升级。

1
2
3
4
5
6
apt-get install software-properties-common
add-apt-repository ppa:ubuntu-toolchain-r/test
apt-get update
apt-get install gcc-4.9 g++-4.9
 
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9
1
2
3
git clone https://github.com/giltu/KernelPCC.git
 
cd KernelPCC

编辑 tcp_TA.c, 替换 NET_INC_STATS_BH 为 NET_INC_STATS, 替换 NET_ADD_STATS_BH 为 NET_ADD_STATS ,保存。 == 此处替换操作仅针对 4.9 及更新版本的内核。 ==

然后开始编译:

1
make

编译过程中 warn 不用管,但是出现 error 就会失败, == 这一步各种坑 == 。编译成功会在目录下生成一个 tcp_TA.ko 文件。

加载内核模块:

1
2
3
insmod tcp_TA.ko
 
lsmod grep TA

返回 tcp_TA 16384 32 类似这样的结果即加载成功。

1
sysctl net.ipv4.tcp_available_congestion_control

返回一般为 net.ipv4.tcp_available_congestion_control = bbr cubic reno TA

切换 tcp 拥塞控制算法为 TA :

1
sysctl -w net.ipv4.tcp_congestion_control=TA

最后检查一下:

1
sysctl net.ipv4.tcp_congestion_control

返回 net.ipv4.tcp_congestion_control=TA 即可。

补充

  • 不一定需要 4.9 版本的 kernel ,其他版本的 kernel 安装好相应的 header 和稍微改一下由于内核代码更新换代导致的小错误即可。
  • Ubuntu/Debian kernel 及 header 列表 http://kernel.ubuntu.com/~kernel-ppa/mainline/

本文由@Michael发布

感谢作者 @phuslu  , 原贴地址: https://www.91yunbbs.com/discussion/441/

现状:

  1. nginx 的 autoindex 虽然速度比较快,但是美化不足,可以说巨丑。
  2. 类似 h5ai 解决方案这种又十分笨重,性能堪忧。

改进:

  1. 使用 nginx 的 autoindex 页脚 (footer) 功能添加 javascript 来重新渲染并美化页面。
  2. 使用 twitter bootstrap 和 github octicons 做素材 , 并适配移动端
  3. 检测当前页面 Readme.md 并渲染,和 github 保持一致。

演示:

  1. https://phuslu.github.io/

教程:

  1. 把  https://phuslu.github.io/autoindex.html  下载到网站 wwwroot 根目录。
  2. 在 nginx autoindex 指令下面添加  add_after_body /autoindex.html;  然后重启 nginx 即可
  3. 完整配置例子请见  https://phuslu.github.io/autoindex.html

建议系统为Debian 8 64、Centos 7及以上。

1、下载脚本

1
wget --no-check-certificate https://raw.githubusercontent.com/mixool/rinetd/master/rinetd_bbr_powered -O /root/rinetd

2、设置权限

1
chmod +x rinetd

3、添加监听地址

1
vi rinetd.conf

添加

1
2
3
# bindadress bindport connectaddress connectport
0.0.0.0 443 0.0.0.0 443
0.0.0.0 80 0.0.0.0 80

这块可以添加其他端口,如你的ss端口为9001,则再添加:

1
0.0.0.0 9001 0.0.0.0 9001

4、设置开机启动

1
vi /etc/systemd/system/rinetd.service

添加

1
2
3
4
5
6
7
8
9
[Unit]
Description=rinetd

[Service]
ExecStart=/root/rinetd -f -c /root/rinetd.conf raw venet0:0
Restart=always

[Install]
WantedBy=multi-user.target

5、启动

1
systemctl enable rinetd.service && systemctl start rinetd.service

6、效果 比较明显,对于OpenVZ VPS来说,救星啊。 我的alpharacks ovz vps,用了后,轻松1080P。 alpharacks-bbr.jpg

via:http://xpsss.com/851.html

很多新手在接触Linux的初期,都会因为习惯了 Windows的可视化操作而不适应 Linux纯命令行的操作,一些基础的 Linux命令都要去百度谷歌查询,这样很浪费时间,所以我就简单整理一些 Linux基础命令提供给新手理解,以后或许还会有进阶篇、高级篇(或许

这篇文章,不仅仅是写给新手学习的,也是写给我学习Linux的,我在写这篇文章的时候,也是在学习和了解这些基础命令,同时留着以后备忘。

包管理器 apt-get Debian/Ubuntu系统包管理器 apt-get 是Debian/Ubuntu系统中 一个用于快速下载/安装的简单命令行管理工具! 参数介绍:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 命令:
update - 检索 新的包列表
upgrade - 升级 可更新的所有软件包
install - 安装 新软件包(pkg是libc6不是libc6.deb)
remove - 删除 软件包
autoremove - 自动删除 所有未使用的软件包
purge - 删除 软件包和配置文件
clean - 清除 已下载的归档文件
autoclean - 清除 旧的下载的档案文件
check - 验证 是否有损坏的依赖
download - 下载 二进制包到当前目录
 
# 选项:
-q :不输出任何信息
-qq :除了错误之外,没有输出
-d :仅下载,不要安装或解压缩存档
-y :对所有确定询问都选择 Yes,并且不提示
-f :尝试纠正 被破坏依赖关系的系统
-m :如果存档是可定位的,则尝试继续
-u :显示升级包的列表
-b :在获取源代码包后构建源包
 
# 更多的命令可以用 apt-get --help 查看。

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 检索 新的包列表
apt-get update
 
# 升级 可更新的所有软件包(注意这个命令会升级所有的软件包,所以会升级很长时间)
apt-get upgrade
 
# 安装 Nginx 软件包
apt-get install nginx
 
# 卸载 Nginx 软件包
apt-get remove nginx
 
# 卸载 Nginx 软件包 并删除所有相关配置文件
apt-get remove --purge nginx
 
# 在安装软件和卸载的时候,为了避免误操作,都会询问是否继续,每次都要输入 y 来确定会很麻烦,可以加上 -y 参数
# 安装 Nginx 软件包 并不显示确定提示
apt-get install nginx -y
 
# 卸载 Nginx 软件包,删除所有相关配置文件 并不显示提示
apt-get remove --purge nginx -y
 
# 清除 旧的/无用 的软件包
apt-get clean && apt-get autoclean
 
# 下载 Nginx 二进制软件包到当前目录,但不解压和安装
apt-get download nginx -d
 
# 更多的命令可以用 apt-get --help 查看。

yum CentOS系统包管理器

yum 是CentOS系统中 一个用于快速下载/安装的简单命令行管理工具!

参数介绍:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 命令:
 
update - 检索 新的包列表
upgrade - 升级 软件包
search - 搜索 软件包
install - 安装 软件包
list - 列出 软件包或者软件包组
info - 显示软件包或者软件包组的详细信息
erase - 删除 软件包(这两个命令一样)
remove - 删除 软件包(这两个命令一样)
groupinfo - 显示 有关包组的详细信息
groupinstall - 安装 软件包组(就像一种软件合集)
grouplist - 列出 可用的软件包组
groupremove - 删除 软件包组
check - 检查 软件包
check-update - 检查 可更新的软件包
clean - 清除 缓存目录内的软件包
deplist - 列出 一个包的依赖关系
distribution-synchronization - 同步 已安装的软件包到最新的版本
downgrad - 降级 一个软件包
reinstall - 重新安装 软件包(自动删除重装)
repolist - 显示 配置的软件包仓库
resolvedep - 确定 软件包需要的依赖关系
 
# 选项:
-t :容忍错误
-C :完全从系统缓存运行,不要更新缓存
-R 分钟 :最大命令等待时间
-q :安静的操作
-y :对于所有问题回答是
--nogpgcheck :禁用gpg签名检查
 
# 更多的命令可以用 yum --help 查看。

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 检索 新的包列表
yum update
 
# 安装 Nginx 软件包
yum install nginx
 
# 安装 Development Tools 软件包组(这个软件包组中包含了编译所需的软件)
# 注意:当软件包或者软件包组的名字中包含空格的时候,请把 软件包或软件包组 加上双引号!
yum groupinstall "Development Tools"
 
# 卸载 Nginx 软件包
yum erase nginx / yum remove nginx
 
# 卸载 Development Tools 软件包组
yum groupremove "Development Tools"
 
# 升级 所有可更新的软件包
yum upgrade
 
# 升级 Nginx 可更新的软件包
yum upgrade nginx
 
# 在安装软件和卸载的时候,为了避免误操作,都会询问是否继续,每次都要输入 y 来确定会很麻烦,可以加上 -y 参数
# 安装 Nginx 软件包 并不显示确定提示
yum install nginx -y
 
# 卸载 Nginx 软件包 并不显示确定提示
yum erase nginx -y / yum remove nginx -y
 
# 搜索 Nginx 软件包是否存着
yum search nginx
 
# 列出 可用的软件包
yum list
 
# 列出 可用的软件包组
yum grouplist
 
# 清除 缓存目录中的所有软件包
yum clean
 
# 清除 缓存目录中的 Nginx 软件包
yum clean nginx
 
# 重装 Nginx 软件包
yum reinstall nginx
 
# 更多的命令可以用 yum --help 查看。

文件/文件夹 操作

以下除特殊说明,都以当前目录为 /root 示例。

mkdir 新建 文件夹

1
2
3
4
# 在当前文件夹新建一个 bash 文件夹,完整的绝对路径就是 /root/bash
mkdir bash
 
# 更多的命令可以用 mkdir --help 查看。

cd 进入 文件夹

1
2
3
4
5
6
7
8
9
# 你当前在 /root目录中,使用这个命令会进入 /root/bash目录,这是相对路径
cd bash
# 如果你不在 /root目录中的话,就不能用上面的相对路径了,就需要绝对路径
cd /root/bash
————————————————————————————————————————————————————————————————————————————
# 假设你当前在 /root/bash目录中,使用相对路径,你可以用这个命令进入上一级 /root目录, .. 代表相对路径 上级目录
cd ..
# 当然你也可以用绝对路径来进入上一级 /root目录
cd /root

cp 复制或重命名 文件/文件夹

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 复制当前目录内的 log.txt文件到 /var目录
cp log.txt /var/log.txt
# 复制当前目录内的 bash文件夹到 /home目录
cp -R bash /home/bash
————————————————————————————————————————————————————————————————————————————
# 复制当前目录内的所有.txt后缀的文件到 /var/log目录
cp *.txt /var/log
# 复制当前目录内的所有以 doubi开头的文件到 /var/log目录
cp doubi* /var/log
# 复制当前目录内的所有以 doubi开头 以.txt后缀结尾的文件到 /var/log目录
cp doubi*.txt /var/log
————————————————————————————————————————————————————————————————————————————
# 假设当前目录是 /root/doubi/log,要把这个目录中的所有.txt后缀的文件复制到上一级目录 /root/doubi,那么这样做
cp *.txt ..
# .. 就是相对路径,代表上一级目录,当然你也可以用绝对路径,这样更不容易出错
cp *.txt /root/doubi
————————————————————————————————————————————————————————————————————————————
# 重命名当前目录内的 log.txt文件为 log2.txt
cp log.txt log2.txt
# 复制当前目录内的 log.txt文件到 /var目录并重命名为 log1.txt
cp log.txt /var/log1.txt
# 复制当前目录内的 bash文件夹到 /home目录并重命名为 bash2
cp -R bash /home/bash2
————————————————————————————————————————————————————————————————————————————
# 复制当前目录内的 log.txt文件到 /var目录,但是 /var 目录中已经存着 log.txt,那么会提示 cp: overwrite `/var/log.txt'? 可以用 -f 强制覆盖
cp -f log /var/log.txt
# 复制当前目录内的 log.txt log1.txt log2.txt文件和 log233目录到 /home/log目录中
cp -R log.txt log1.txt log2.txt log233 /home/log
 
# 更多的命令可以用 cp --help 查看。

 

mv 移动或重命名 文件/文件夹

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 关于 mv 命令,可以参考上面 cp 的使用方法,没什么区别,只是一个是复制,一个是移动,把上面 cp 命令改成 mv 就能套用了。
 
# 移动当前目录内的 log.txt文件到 /var目录
mv log.txt /var/log.txt
# 移动当前目录内的 bash文件夹到 /home目录
mv bash /home/bash
————————————————————————————————————————————————————————————————————————————
# 重命名当前目录内的 log.txt文件为 log2.txt
mv log.txt log2.txt
# 复制当前目录内的 log.txt文件到 /var目录并重命名为 log1.txt
mv log.txt /var/log1.txt
# 复制当前目录内的 bash文件夹到 /home目录并重命名为 bash2
mv bash /home/bash2
 
# 更多的命令可以用 mv --help 查看

rm 删除 文件/文件夹

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 删除当前目录下的 log.txt文件
rm log.txt
# 删除当前目录下所有.txt后缀的文件
rm *.txt
# 使用 rm 命令删除时,会提示你是否确定删除,输入 y 即删除,输入 n 则取消
# rm: remove regular file `log.txt'? y
————————————————————————————————————————————————————————————————————————————
# 删除当前目录下所有.txt后缀的文件
rm *.txt
# 删除当前目录下所有以 doubi开头的文件
rm doubi*
# 删除当前目录下所有以 doubi开头 以.txt后缀结尾的文件
rm doubi*.txt
————————————————————————————————————————————————————————————————————————————
# 当你用 rm 删除目录的时候会发现提示这不是一个文件
# rm bash
# rm: cannot remove `bash': Is a directory
# 可以加上 -r 来归递删除目录及其目录下的内容
rm -r bash
————————————————————————————————————————————————————————————————————————————
# 因为为了避免手误删除错误,所以 rm默认是加上了 -i 的参数,也就是每一次删除文件/目录都会提示,如果觉得烦可以用 -rf 参数
rm -rf bash
# rm -rf 这个命令请慎重使用,而且千万不要使用 rm -rf / 或者 rm -rf /* 之类的命令(系统自杀),可能会让你系统爆炸,所以使用请慎重!
 
# 更多的命令可以用 rm --help 查看。

 

查看/编辑文件 操作

ls 显示目录中文件

1
2
3
4
5
6
7
8
9
10
# 显示当前目录下的所有文件
ls -a
————————————————————————————————————————————————————————————————————————————
# 命令后面加上 绝对路径/相对路径 就会显示指定文件夹内的所有文件
ls -a bash/log
# 相对路径,当前目录是 /root ,欲查看的目录是 /root/bash/log
ls -a /root/bash/log
# 绝对路径, 当前目录是 /root ,欲查看的目录是 /root/bash/log
 
# 更多的命令可以用 ls --help 来查看。

 

du 查看 文件/文件夹 占用磁盘空间的大小

参数介绍:

1
2
3
4
5
6
7
8
9
10
-h :以人类易读的方式显示
-a :显示 目录占用的磁盘空间大小,并显示其下目录和文件占用磁盘空间的大小
-s :显示 目录占用的磁盘空间大小,但不显示其下子目录和文件占用的磁盘空间大小
-c :显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和
--apparent-size:显示目录或文件自身的大小
-l :统计硬链接占用磁盘空间的大小
-L :统计符号链接所指向的文件占用的磁盘空间大小
# 待写...
 
# 更多的命令可以用 du --help 来查看。

 

使用示例:

1
2
3
4
5
6
7
8
9
# 显示 /root 文件夹的大小,但不显示其子目录和文件的大小
du -sh
 
# 显示 /root 文件夹的大小,并显示其子目录和文件的大小
du -ah
 
# 待写...
 
# 更多的命令可以用 du --help 来查看。

cat 查看文件内容

假设 log.txt文件的内容为:

1
2
3
4
5
6
7
8
doubi233
doubi
 
 
doubi666
 
doubi2366
doubi8888

 

查看文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 查看 log.txt文件的所有内容
cat log.txt
# 输出示例如下
doubi233
doubi
 
 
doubi666
 
doubi2366
doubi8888
 
# 查看 log.txt文件的所有内容,并对所有行编号
cat -n log.txt
# 输出示例如下:
1 doubi233
2 doubi
3
4
5 doubi666
6
7 doubi2366
8 doubi8888
 
# 查看 log.txt文件的所有内容,并对非空行编号
cat -b log.txt
# 输出示例如下:
1 doubi233
2 doubi
 
 
3 doubi666
 
4 doubi2366
5 doubi8888
 
# 查看 log.txt文件的所有内容,并对非空行编号,且不输出多行空行
cat -bs log.txt
# 输出示例如下:
1 doubi233
2 doubi
 
3 doubi666
 
4 doubi2366
5 doubi8888

清空文件:

1
2
3
4
5
# 清空当前目录中的 log.txt 文件
cat /dev/null > log.txt
 
# 清空 /var目录中的 log.txt 文件
cat /dev/null > /var/log.txt

写入文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 写入文本到当前目录中的 log.txt文件中(加入文本到文件内容最后)
cat >> log.txt <<-EOF
doubi
doubi233
doubi666
EOF
 
# 清空文件并写入文本到 /var目录中的 log.txt文件中(先清空后写入)
cat > /var/log.txt <<-EOF
doubi
doubi233
doubi666
EOF
 
# 更多的命令可以用 cat --help 来查看。

 

head 查看文件内容(主要用于正查)

参数介绍:

1
2
3
4
5
-c 数字:显示指定文件的前 xx 字节的内容(bytes)
-n 数字:显示指定文件的前 xx 行的内容
-q :不显示包含指定文件名的文件头(当使用 head打开多个文件的时候,会去在每个文件输出结果的顶部添加一个包含文件名的文件头用于区分)
 
# 更多的命令可以用 head --help 来查看。

使用示例:

假设 log.txt 文件内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
doubi1
doubi2
doubi3
doubi4
doubi5
# 查看 log.txt文件的全部内容
head log.txt
 
# 查看 log.txt文件的前 4字节的内容
head -c 4 log.txt
 
# 输出示例
doub
 
# 查看 log.txt文件的前 2行的内容
head -n 2 log.txt
 
# 输出示例
doubi1
doubi2
 
# 查看 log.txt文件的从倒数第2行到行首的内容
head -n -2 log.txt
 
# 输出示例
doubi1
doubi2
doubi3
 
# 查看 log.txt log1.txt log2.txt文件的前 3行内容
head -n 3 log.txt log1.txt log2.txt
 
# 更多的命令可以用 head --help 来查看。

tail 查看文件内容(主要用于倒查)

1
2
3
4
5
-c 数字:如果数字为正数(例如 -c +5),显示指定文件从行首第 xx 字节到最后的内容;如果数字为负数(例如 -c -5),显示指定文件从行尾第 xx 字节到最后内容。
-n 数字:如果数字为正数(例如 -c +3),显示指定文件从行首第 xx 行到最后的内容;如果数字为负数(例如 -c -3),显示指定文件从行尾第 xx 行到最后的内容。
-f :即时输出文件变化后增加的内容,也就是监视一个文件的内容变化(常用于监视日志输出),使用 Ctrl+C 终止
 
# 更多的命令可以用 tail --help 来查看

使用示例:

假设 log.txt 文件内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
doubi1
doubi2
doubi3
doubi4
doubi5
# 查看 log.txt文件的全部内容
tail log.txt
 
# 查看 log.txt文件从行首 第25字节到最后的内容
tail -c +25 log.txt
 
# 输出示例
bi4
doubi5
 
# 查看 log.txt文件从行尾 第4字节到最前面的内容
tail -c -4 log.txt
 
# 输出示例
bi5
 
# 查看 log.txt文件的从第2行到最后一行的内容
tail -n +2 log.txt
 
# 输出示例
doubi2
doubi3
doubi4
doubi5
 
# 查看 log.txt文件的后 2行的内容
tail -n -2 log.txt
 
# 输出示例
doubi4
doubi5
 
# 持续查看(监视) log.txt文件的变化内容(新增加的内容),使用 Ctrl+C 终止
tail -f log.txt
 
# 查看 log.txt log1.txt log2.txt文件的前 3行内容
tail -n 3 log.txt log1.txt log2.txt
 
# 更多的命令可以用 tail --help 来查看。

 

sed 查看/编辑文件内容

参数介绍:

1
2
3
4
-i :操作后应用保存到原文件(如果不加这个参数,那么任何修改都不会影响原文件里的内容,只会把结果输出)
# 待写...
 
# 更多的命令可以用 sed --help 来查看。

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 查看 log.txt 第3行的内容
sed '3p' log.txt
 
# 查看 log.txt 第2-8行的内容
sed '2,8p' log.txt
 
# 删除 log.txt 第4行
sed -i '4d' log.txt
 
# 删除 log.txt 第3-7行
sed -i '3,7d' log.txt
 
# 删除 log.txt 第1行
sed -i '1d' log.txt
 
# 删除 log.txt 最后1行
sed -i '$d' log.txt
 
# 删除 log.txt 文件中所有包含 233内容的行
sed -i '/233/d' log.txt
 
# 替换 log.txt 文件中所有 233为666
sed -i 's/233/666/' log.txt
 
# 替换 log.txt 文件中所有 /ver 为 doubi/,因为有斜杠,所以需要使用 转义,但是单引号会导致无法转义,所以要改成双引号。
sed -i "s//ver/doubi//" log.txt
 
# 待写...
 
# 更多的命令可以用 sed --help 来查看。

vi、vim、nano 编辑文件内容

vi 介绍

vi 是Linux很棒的一个文本编辑器,不过也存在一些缺点,比如操作略麻烦。而 vim就相当于 vi的扩展或者加强版,主要介绍 vim。

vim 介绍

vim 相当于 vi的扩展或者加强版,一些系统只安装了 vi,所以想要用 vim还需要手动安装( yum install vim -y / apt-get install vim -y),安装 vim后,会自动替换或者说整合 vi。

当你使用 vi 命令的时候,首先进入的是 命令行模式,这个模式就是 vi 自身的功能,而点击 I 键 后就会进入编辑模式(插入模式),这时候就可以直接输入字符了,这个就是 vim的扩展功能了。当修改完成后,按 ESC键 即可退出编辑模式回到命令行模式,这时候输入 :wq 并回车代表保存并退出,如果不想保存可以使用 :q! 不保存强制退出。

vim的命令行 命令很多,我也没打算都写出来,只写出最常用的好了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 打开当前目录下的 log.txt文件,如果没有那么会新建 log.txt文件(安装vim后,使用 vi和 vim打开文件没区别)
vi log.txt
vim log.txt
 
# 在命令行模式下,直接输入以下 符号和字母(区分大小写)
## 进入编辑模式(插入模式,按 Esc键 即可返回命令行模式)
i
## 删除光标当前所在的一行
dd
## 删除文件内所有内容
dddG
## 复制光标当前所在的一行
yy
## 粘贴刚才复制的一行内容
p
## 撤销上个操作(误操作可以用这个恢复)
u
## 保存当前文件( : 是英文的冒号)
:w
## 另存当前文件内容为 log2.txt
:w log2.txt
## 退出当前文件
:q
## 不保存 并强制退出当前文件
:q!
## 保存并退出当前文件
:wq
 
# 更多的命令可以用 vi --help / vim --help 来查看。

 

nano 介绍

nano 我挺少用的,一些系统也默认安装了这个 文本编辑器,在一些地方比 vim好用,不过我已经习惯了 vim。

1
2
3
4
5
6
7
8
9
10
# 打开当前目录下的 log.txt文件,如果没有那么会新建 log.txt文件
nano log.txt
# 进入后直接就可以输入修改文本内容了,修改后我们可以使用这个 按键保存内容
Ctrl+O
# 如果不需要编辑了,那么可以用这个 按键退出当前文件
Ctrl+X
# 如果你在退出前已经修改但没有保存,那么会提醒你是否保存,如果保存就输入 y ,不保存输入 n
# 然后就会让你输入要保存的文件名(默认原文件名,所以直接按 Enter回车即可,除非你要另存为其他文件名)
Enter
# 更多的命令可以用 nano --help 来查看。

解压缩 操作

在Linux中经常会下载到压缩文件,而压缩文件的格式有很多,比如 zip、rar、gz、xz、tar.gz、tar.xz等。

比较常见的就是各种 .tar、.tar.xz、.tar.gz、.tar.bz、.tar.bz2、.tar.Z 后缀压缩包,这几个的解压缩命令基本一样,说明一下参数的意义。

tar 本身只是一个打包的作用,而 .tar 后面的 .zx / .gz / .bz 等等才是压缩格式,也就是比如 log.tar.gz 压缩包,就是先用 .tar 把指定文件/文件夹打包到一起,然后再用 gz 来压缩打包后的 .tar 为 .tar.gz 。

1
2
3
4
5
6
7
8
9
10
-x 是从压缩文件提取(解压)文件出来,所以在解压命令中都有这个参数。
-c :创建一个新的压缩包文件,所以在压缩命令中都有这个参数。
-f :指定要解压的压缩包文件或要压缩的文件/文件夹,所以这个参数必须放在 解压缩命令参数的最后,然后后面跟着 要解压到压缩包文件或要压缩的文件/文件夹。
-j :解压缩 bz / bz2 格式的参数
-J :解压缩 xz / lzip 格式的参数
-z :解压缩 gz / tgz 格式的参数
-Z :解压缩 Z 格式的参数
-v :详细列出解压缩过程中处理的文件
 
# 更多的命令可以用 tar --help 来查看。

tar gz zip等 解压 压缩包 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 解压后缀为 .tar 的压缩包
tar -xf log.tar
————————————————————————————————————————————————————————————————————————————
# 解压后缀为 .tar.xz 的压缩包
tar -xJf log.tar.xz
————————————————————————————————————————————————————————————————————————————
# 解压后缀为 .tar.gz 的压缩包,有两个方法
tar -xzf log.tar.gz
————————————————————————————————————————————————————————————————————————————
# 解压后缀为 .gz 的压缩包,有两个方法,如提示命令不存在,请安装 yum install gzip -y / apt-get install gzip -y
gzip -d log.gz
gunzip log.gz
————————————————————————————————————————————————————————————————————————————
# 解压后缀为 .bz / .bz2 / tar.bz2 的压缩包,有两个方法
bzip2 -d log.bz
bunzip2 log.bz
tar -jxf log.tar.bz
 
bzip2 -d log.bz2
bunzip2 log.bz2
tar -jxf log.tar.bz2
————————————————————————————————————————————————————————————————————————————
# 解压后缀为 .Z / tar.Z 的压缩包,有两个方法
uncompress log.Z log.txt
uncompress log.Z log
————————————————————————————————————————————————————————————————————————————
tar xZf log.tar.Z log.txt
tar xZf log.tar.Z log
————————————————————————————————————————————————————————————————————————————
# 解压后缀为 .rar 的压缩包,如提示命令不存在,请安装 yum install unrar -y / apt-get install unrar -y ,注意 rar 和 unrar 是分开的
unrar x log.rar
————————————————————————————————————————————————————————————————————————————
# 解压后缀为 .zip 的压缩包,如提示命令不存在,请安装 yum install unzip -y / apt-get install unzip -y,注意 zip 和 unzip 是分开的
unzip log.zip
 
# 更多的命令可以用 tar --help / gzip --help / unrar --help / unzip --help 来查看。

压缩 文件/文件夹 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.tar 压缩包
tar -cf log.tar log.txt
tar -cf log.tar log
————————————————————————————————————————————————————————————————————————————
# 如果要压缩多个文件和文件夹,那么只需要在后面一直加下去即可
tar -cf log.tar log.txt doub.txt log bash
————————————————————————————————————————————————————————————————————————————
# 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.tar.xz 压缩包,以下的其他后缀压缩命令都是一样
tar -cJf log.tar.xz log.txt
tar -cJf log.tar.xz log
————————————————————————————————————————————————————————————————————————————
# 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.tar.gz 压缩包
tar -czf log.tar.gz log.txt
tar -czf log.tar.gz log
————————————————————————————————————————————————————————————————————————————
# 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.gz 压缩包
gzip log.gz log.txt
gzip log.gz log
————————————————————————————————————————————————————————————————————————————
# 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.tar.bz 压缩包
暂时没查到
————————————————————————————————————————————————————————————————————————————
# 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.bz / log.tar.bz / log.bz2 / log.tar.bz2压缩包
bzip2 -z log.txt
bzip2 -z log
 
tar cjf log.tar.bz2 log.txt
tar cjf log.tar.bz2 log
————————————————————————————————————————————————————————————————————————————
# 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.Z / log.tar.Z 压缩包
compress log.txt
compress log
 
tar cZf log.tar.Z log.txt
tar cZf log.tar.Z log
————————————————————————————————————————————————————————————————————————————
# 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.rar 压缩包,如提示命令不存在,请安装 yum install rar -y / apt-get install rar -y ,注意 rar 和 unrar 是分开的
unrar a log.rar log.txt
unrar a log.rar log
————————————————————————————————————————————————————————————————————————————
# 分别压缩当前目录下的 log.txt文件 / log文件夹为 log.zip 压缩包,如提示命令不存在,请安装 yum install zip -y / apt-get install zip -y ,注意 zip 和 unzip 是分开的
zip log.zip log.txt
zip log.zip log
 
# 更多的命令可以用 tar --help / gzip --help / rar --help / zip --help 来查看。

网络工具

wget 下载工具

wget 是Linux系统最常用的工具之一,命令行方式的多功能下载工具,支持HTTP,HTTPS和FTP协议。

参数介绍:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 只介绍最常用的参数
# 如果提示命令不存在,那么使用 yum install wget -y / apt-get install wget -y 来安装(有一些非常精简的系统可能会没装)
 
-b :启动后,后台下载
-q :安静模式(不输出任何信息)
-c :断点续传下载文件
-O :指定下载后的文件名(可使用绝对路径目录+文件名)
-P :指定下载后的文件目录(-P只能指定下载目录,并不能指定文件名)
-t :设置重试次数(0代表无限)
-T :设置超时时间(单位:秒)
-N :只获取比本地新的文件(新的覆盖旧的)
-4 :仅连接至 IPv4地址
-6 :仅连接至 IPv6地址
--limit-rate=xxxk :限制下载速度(k代表KB/S)
--post-data :通过POST方式发送数据
--no-check-certificate :不验证服务器的SSL证书
 
# 更多的命令可以用 wget --help 来查看。

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 下载一个文件到当前目录
wget https://softs.pw/100MB.bin
 
# 下载文件到当前目录并重命名为 200MB.bin
wget -O "200MB.bin" https://softs.pw/100MB.bin
 
# 下载文件到 /root目录(-P只能指定下载目录,并不能指定文件名)
wget -P "/root" https://softs.pw/100MB.bin
 
# 下载文件到 /root/doubi目录并重命名为 200MB.bin
wget -O "/root/doubi/200MB.bin" https://softs.pw/100MB.bin
 
# 下载文件完成之前 wget进程结束了,那么可以使用断点续传重新下载中断的文件(前提是下载服务器支持断点续传)
wget -c https://softs.pw/100MB.bin
# 通过后台下载文件到 /root/doubi目录并重命名为 200MB.bin
wget -b -O "/root/doubi/200MB.bin" https://softs.pw/100MB.bin
# Continuing in background, pid 2333.
# Output will be written to `wget-log'.
# 后台下后,你可以使用以下命令来查看下载进度:
tail -f wget-log
 
# 有时候一些Linux系统中的SSL证书不完整,会导致下载一些 HTTPS网站文件的时候会验证SSL证书失败,可以这样做
# 不验证服务器SSL证书,下载文件到当前目录并重命名为 200MB.bin
wget --no-check-certificate -O "200MB.bin" https://softs.pw/100MB.bin
 
# 使用wget发送POST请求数据
wget --post-data "user=doubi&passwd=23333" https://xxx.xx/
 
# 下载文件到当前目录 并仅通过IPv4连接 只获取比本地新的文件,限速 200KB/S
wget --limit-rate=200k -N -4 https://softs.pw/100MB.bin
 
# 下载文件到当前目录 并重试次数为 1,超时时间为 2秒
wget -t1 -T2 https://softs.pw/100MB.bin
 
# 通过 wget来获取服务器的外网IP(-qO- 代表运行完会输出下载的信息,并不会保存到本地文件)
wget -qO- ipinfo.io/ip
 
# 更多的命令可以用 wget --help 来查看。

curl 下载工具

curl是Linux系统一个利用URL规则在命令行下工作的文件传输工具,是一款很强大的HTTP命令行工具。它支持文件的上传和下载,是综合传输工具,但习惯称curl为下载工具。

参数介绍:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 只介绍最常用的参数
# 如果提示命令不存在,那么使用 yum install curl -y / apt-get install curl -y 来安装(有一些非常精简的系统可能会没装)
 
-s :安静模式(不会输出任何信息)
-C :断点续传下载文件
-o :输出写入到文件中
-O :输出写入到文件,文件名为 远程文件的名称
-k :不验证服务器SSL证书
-T :上传文件
-4 :仅连接至 IPv4地址
-6 :仅连接至 IPv6地址
-m :设置传输总时间(单位:秒)
--retry :设置重试次数
--data :通过POST方式发送数据
--limit-rate xxxK :限制下载速度(K代表KB/S)
 
# 更多的命令可以用 curl --help 来查看。

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 获取当前服务器的外网IP
curl ipinfo.io/ip
 
# 获取一个文件保存到当前目录中
wget -O https://softs.pw/Bash/ssr.sh
 
# 获取一个文件保存到 /root/doubi目录中 并修改文件名为 233.sh
curl -o "/root/doubi/233.sh" https://softs.pw/Bash/ssr.sh
 
# 下载文件完成之前 curl进程结束了,那么可以使用断点续传重新下载中断的文件(前提是下载服务器支持断点续传)
curl -C -O https://softs.pw/100MB.bin
 
# 有时候一些Linux系统中的SSL证书不完整,会导致访问/下载一些 HTTPS网站/文件的时候会验证SSL证书失败,可以这样做
# 不验证服务器SSL证书,下载文件到当前目录并重命名为 233.sh
curl -k -o "233.sh" https://softs.pw/Bash/ssr.sh
 
# 使用curl发送GET请求数据
curl https://xxx.xx/?user=doubi
 
# 使用curl发送POST请求数据
curl --data "user=doubi&passwd=23333" https://xxx.xx/
 
# 下载文件到当前目录 并仅通过IPv4连接,限速 200KB/S
curl --limit-rate 200K -4 https://softs.pw/100MB.bin
 
# 下载文件到当前目录 并重试次数为 1,超时时间为 2秒
curl --retry 1 -m 10 https://softs.pw/100MB.bin
 
# 更多的命令可以用 curl --help 来查看。

netstat 查看链接和端口监听等信息

参数介绍:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-n :不显示别名(主机名/域名以 数字或IP显示)
-e :显示其他/更多信息
-p :显示进程PID/进程名
-c :持续输出(设置后会每隔 1秒输出一次,Ctrl+C 终止)
-l :显示正在监听的套接字
-a :显示全部信息
 
# 下面这些就不很常用了。
-r :显示路由表
-i :显示网络接口(网卡)
-g :显示多播组信息
-s :显示网络统计
-M :显示伪装连接
-v :显示正在进行的工作
 
# 更多的命令可以用 netstat --help 来查看。

使用示例:

1
2
3
4
5
6
7
8
# 显示当前服务器的所有连接信息
netstat -a
 
# 显示当前服务器的所有 TCP连接信息
netstat -at
 
# 显示当前服务器的所有 UDP连接信息
netstat -au

一般来说经常使用这个命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 显示当前服务器的所有正在监听 TCP端口的信息,并且 显示进程PID和进程名,但不显示别名(域名以IP显示),这个命令算是最常用的了。
netstat -lntp
 
# 输出示例
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:80 0.0.0.0:* LISTEN 14233/nginx.conf
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1555/sshd
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 14233/nginx.conf
tcp6 0 0 :::22 :::* LISTEN 1555/sshd
# 显示监听 80端口的进程PID和进程名,grep是匹配并显示 符合关键词的行。
netstat -lntpgrep ":80"
 
# 输出示例
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:80 0.0.0.0:* LISTEN 14233/nginx.conf
 
# 显示 ssh的监听情况,grep是匹配并显示 符合关键词的行。
netstat -lntpgrep "ssh"
 
# 输出示例
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 1555/sshd

表头解释:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Proto :连接协议(tcp/udp是IPv4,tcp6/udp6是IPv6)
Recv-Q : 接收队列(基本都是0,如果不是代表堆积)
Send-Q :发送队列(基本都是0,如果不是代表堆积)
Local Address :本地地址和端口
Foreign Address :对外地址和端口
State :连接状态
PID/Program name :进程PID/进程名
# 每隔 1秒显示一次当前服务器的所有连接信息
netstat -c
 
# 每隔 1秒显示一次当前服务器的所有 TCP连接信息
netstat -ct
 
# 每隔 1秒显示一次当前服务器的所有 UDP连接信息
netstat -cu
 
# 显示当前服务器的路由表
netstat -r
 
# 显示当前服务器的网络接口信息(网卡)
netstat -i
 
# 显示当前服务器的网络统计信息
netstat -s
 
# 更多的命令可以用 netstat --help 来查看。

在使用 netstat命令中,会显示一些连接状态,下面是各状态的意思:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
LISTEN
# 监听来自远程连接的 TCP端口连接请求
SYN-SENT
# 在发送连接请求后,等待匹配的连接请求
SYN-RECEIVED
# 在收到和发送一个连接请求后,等待对方对连接请求的确认
ESTABLISHED
# 代表一个打开的连接
FIN-WAIT-1
# 等待远程 TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2
# 从远程 TCP等待连接中断请求
CLOSE-WAIT
# 等待从本地用户发来的连接中断请求
CLOSING
# 等待远程TCP对连接中断的确认
LAST-ACK
# 等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT
# 等待足够的时间,以确保远程TCP接收到连接中断请求的确认
CLOSED
# 没有任何连接状态(或者关闭了连接)

系统命令

ps 查看进程信息

参数介绍:

1
# 更多的命令可以用 man ps 来查看。

使用示例:

1
2
3
4
5
6
7
8
9
# 显示当前进程信息
ps -ef
 
# 显示 ssh 进程( grep -v grep 表示排除关键词grep,因为使用 grep匹配ssh,也会把grep自己的进程匹配进去的)
ps -efgrep -v grepgrep ssh
# 输出示例
UID PID PPID C STIME TTY TIME CMD #注意使用上面命令的话是不会显示表头这一行的,我只是为了更好理解加上的
root 1738 1 0 01/27 ? 00:08:56 /usr/sbin/sshd
# 待写...

表头解释:

1
2
3
4
5
6
7
8
UID :启动进程的用户
PID :进程标识符(进程 1代表init 是整个系统的父进程)
PPID :父进程标识符(进程 1代表init 是整个系统的父进程)
C :CPU占用率 %
STIME :启动进程的日期
TTY :终端号
TIME :进程运行时间(非休眠状态)
CMD :启动进程的命令(或进程名/进程程序所在目录)

kill 结束进程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 当我们想要结束一个进程的时候,我们可以用 kill 命令
# PID是每个进程的一个唯一标识符,可以使用上面的 ps 命令来查看你要结束进程的PID。
 
# 假设我们要结束 Nginx的进程,那么这样做( grep -v grep 表示排除关键词grep,因为使用 grep匹配ssh,也会把grep自己的进程匹配进去的):
ps -efgrep -v grepgrep "nginx"
 
# 输出示例
UID PID PPID C STIME TTY TIME CMD #注意使用上面命令的话是不会显示表头这一行的,我只是为了更好理解加上的
root 2356 1 0 04/03 ? 00:03:12 nginx
 
# 然后我们可以看到第二列的 PID 进程标识符,然后我们 kill 即可。
kill -9 2356
 
# 中断进程 -2 相当于 程序运行在前台,然后输入 Ctrl+C 的效果,但是进程有权利忽略,所以不一定能结束进程
kill -2 PID
# 强制结束进程 -9 ,注意:强制结束某个进程后,可能会造成进程数据丢失等问题!
kill -9 PID

free 查看内存使用信息

参数介绍:

1
2
3
4
5
6
7
8
9
10
11
12
-b :以 字节(bytes/B) 为单位显示
-k :以 KB 为单位显示
-m :以 MB 为单位显示
-g :以 GB 为单位显示
--tera :以 TB 为单位显示
-h :以 人类易读的方式输出
--si :以 1000为单位转换,而不是 1024(1MB=1*1024KB改成 1MB=1*1000KB)
-t :显示 内存总数 行
-s 时间 :每隔 X秒输出一次(重复输出监视内存,使用 Ctrl+C 终止)
-c 次数 :每隔 1秒输出 X次
 
# 更多的命令可以用 free --help 来查看。

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 显示当前系统内存(默认 free = free -k,单位为 KB)
free
 
# 输出示例
total used free shared buffers cached
Mem: 250872 237752 13120 0 34620 70520
-/+ buffers/cache: 132612 118260
Swap: 643064 1744 641320
 
# 以单位 B/KB/MB/GB/TG 显示当前系统内存
free -b / free -k / free -m / free -g / free --tera
 
# 以人类易读的方式 显示当前系统内存
free -h
 
# 输出示例
total used free shared buffers cached
Mem: 244M 232M 12M 0B 33M 68M
-/+ buffers/cache: 129M 115M
Swap: 627M 1.7M 626M
 
# 以 1000为单位转换并使用 MB为单位 显示当前系统内存(1MB=1*1024KB改成 1MB=1*1000KB)
free -m --si
 
# 每隔 3秒并使用 MB为单位 显示一次当前系统内存
free -ms 3
 
# 每隔 1秒并使用 MB为单位 显示 5次当前系统内存
free -mc 5
 
# 每隔 2秒并使用 MB为单位 总共显示 6次当前系统内存
free -m -c 6 -s 2
 
# 更多的命令可以用 free --help 来查看。

表头解释:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 说明示例
total used free shared buffers cached
Mem: 244M 232M 12M 0B 33M 69M
-/+ buffers/cache: 129M 115M
Swap: 627M 1.7M 626M
# Mem 行,表示物理内存统计
total :系统 总物理内存
used :系统 已分配物理内存(但非全部都在使用,包含buffers好cached)
free :系统 未分配物理内存
shared :系统 共享内存,一般都是 0
buffers :系统 分配但未使用的 buffers数量
cached :系统 分配但未使用的 cached数量
 
# -/+ buffers/cache 行,表示物理内存的缓存统计
used :系统 实际使用的内存
# user= Mem行 used-buffers-cached(232-33-69=130,因单位转换问题 所以会有一点差距)
free :系统 实际可用的内存
# free= Mem行 free+buffers+cached(12+33+69=114,因单位转换问题 所以会有一点差距)
 
# 所以我们看系统的真实 使用/剩余内存 只需要看这一行即可!
 
# Swap 行,表示硬盘的交换分区(虚拟内存)统计
total :系统 总虚拟内存
used :系统 已分配虚拟内存
free :系统 未分配虚拟内存
 
# KVM虚拟化的VPS,可以用这个教程手动添加 SWAP虚拟内存:https://doub.bid/linux-jc7/

date 查看/设置 系统时间

参数介绍:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
-d :以指定的时间格式 显示时间
-f :显示 DATE FILE文件中的每行时间(我也不懂)
-r :显示 文件/文件夹 最后修改时间
-s :设置 系统时间
-u :显示 UTC时间
 
# 时间格式
 
%% - 显示字符%
%a - 星期几的缩写(Sun..Sat)
%A - 星期几的完整名称(Sunday...Saturday)
%b - 月份的缩写(Jan..Dec)
%B - 月份的完整名称(January..December)
%c - 日期与时间。只输入date指令也会显示同样的结果
%C - 世纪(年份除100后去整) [00-99]
%d - 日期(以01-31来表示)。
%D - 日期(含年月日)。
%e - 一个月的第几天 ( 1..31)
%F - 日期,同%Y-%m-%d
%g - 年份(yy)
%G - 年份(yyyy)
%h - 同%b
%H - 小时(00..23)
%I - 小时(01..12)
%j - 一年的第几天(001..366)
%k - 小时( 0..23)
%l - 小时( 1..12)
%m - 月份(01..12)
%M - 分钟(00..59)
%n - 换行
%N - 纳秒(000000000..999999999)
%p - AM or PM
%P - am or pm
%r - 12小时制时间(hh:mm:ss [AP]M)
%R - 24小时制时间(hh:mm)
%s - 从00:00:00 1970-01-01 UTC开始的秒数
%S - 秒(00..60)
%t - 制表符
%T - 24小时制时间(hh:mm:ss)
%u - 一周的第几天(1..7); 1 表示星期一
%U - 一年的第几周,周日为每周的第一天(00..53)
%V - 一年的第几周,周一为每周的第一天 (01..53)
%w - 一周的第几天 (0..6); 0 代表周日
%W - 一年的第几周,周一为每周的第一天(00..53)
%x - 日期(mm/dd/yy)
%X - 时间(%H:%M:%S)
%y - 年份(00..99)
%Y - 年份 (1970…)
%z - RFC-2822 风格数字格式时区(-0500)
%Z - 时区(e.g., EDT), 无法确定时区则为空
 
# 更多的命令可以用 date --help 来查看。

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 显示 当前系统时间
date
# 输出:Wed Apr 5 12:38:44 CST 2017
 
# 显示当前系统的 UTC时间
date -u
# 输出:Wed Apr 5 04:30:06 UTC 2017
# 显示 log.txt 文件的最后修改时间
date -r log.txt
# 显示 当前日期的年份
date +%Y
# 输出:2017
 
# 显示 当前日期的月份
date +%m
# 输出:4
 
# 显示 各种格式类型的日期
date +%D
# 输出:04/05/17
 
date +%Y-%m-%d
# 输出:2017-04-05
 
date +%m/%d/%y
# 输出:04/05/17
 
date +%m/%d/%Y
# 输出:04/05/2017
 
# 显示 Unix时间戳
date +%s
# 输出:1491367399
 
# 显示一个完整的时间(年、月、日、小时、分钟、秒钟、周几 时区)
date "+%Y-%m-%d %H:%M:%S %u %Z"
# 输出:2017-04-05 12:12:15 3 CST
 
# 设置 系统时间(年、月、日)
date -s "2017-04-05"
 
# 设置 系统时间(小时、分钟、秒钟)
date -s "10:29:05"
 
# 设置 系统时间(年、月、日、小时、分钟、秒钟)
date -s "2017-04-05 10:29:05"
 
# 更多的命令可以用 date --help 来查看。

再教你们一个修改时区为上海(北京)时区的方法:

1
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

然后再用 date 查看时间,就会发现时区变为 CST 了。

chmod 修改 文件/文件夹 权限

参数介绍:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
-c :只输出被改变权限的文件信息
-f :当chmod不能改变文件模式时,不通知文件的用户
-R :可递归遍历子目录,把修改应到目录下所有文件和子目录
-v :无论修改是否成功,输出每个文件的信息
 
# 操作符号:
 
+ :添加某个权限。
- :取消某个权限。
= :赋予给定权限并取消其他所有权限(如果有的话)。
 
# 权限设置字母:
 
r :可读
w :可写
x :可执行
X :只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性
s :在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位
t :保存程序的文本到交换设备上
u :当前用户的权限
g :当前用户同组的权限
o :其他用户的权限
 
# 权限设定数字:
 
# 数字表示的属性含义:
0 :表示没有权限
1 :表示可执行权限
2 :表示可写权限
4 :表示可读权限
 
# 然后将其相加,所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
# 如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。
 
# 更多的命令可以用 chmod --help 来查看。

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 当需要运行 可执行的脚本或者程序(比如 Go语言编写的软件)的时候,需要赋予执行权限
chmod +x ssr.sh
 
# 赋予 log.txt 文件可读权限
chmod 444 log.txt
 
# 赋予 /ver/log 文件夹 可读、可写权限
chmod 666 log.txt
 
# 赋予 /home/www 文件夹 可读、可写、可执行权限
chmod 777 log.txt
 
# 赋予 /home/www 文件夹极其所有子目录和文件 可读、可写、可执行权限
chmod -R 777 log.txt
# 更多的命令可以用 chmod --help 来查看。

 

uname 获取操作系统信息

参数介绍:

1
2
3
4
5
6
7
8
9
10
11
–a:显示 全部信息
–m:显示 系统位数
–n:显示 主机名称
–r:显示 操作系统的发行编号
–s:显示 操作系统的名称
–v:显示 操作系统的版本
–p:输出 处理器类型 或“unknown”
–i:输出 硬件平台 或“unknown”
–o:输出 操作系统名称
 
# 更多的命令可以用 uname –help 来查看。

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
root@doub.bid:~# uname #在使用 uname 的时候,相当于是使用 uname -s
Linux
root@doub.bid:~# uname -a
Linux doub.bid 2.6.32–042stab120.6 #1 SMP Thu Oct 27 16:59:03 MSK 2016 i686 GNU/Linux
root@doub.bid:~# uname -m #输出一般是64位: x86_64 / 32位: i386 或分支 i686
i686
root@doub.bid:~# uname -n
doub.bid
root@doub.bid:~# uname -r
2.6.32–042stab120.6
root@doub.bid:~# uname -s
Linux
root@doub.bid:~# uname -v
#1 SMP Thu Oct 27 16:59:03 MSK 2016
root@doub.bid:~# uname -p
unknown
root@doub.bid:~# uname -i
unknown
root@doub.bid:~# uname -o
GNU/Linux

我只是暂时把我想到的写出来了,我还会继续慢慢添加的,有什么建议可以在下面留言评论。

转载请超链接注明:逗比根据地 » 『持续更新』Linux 常用命令简单介绍 —— 基础篇

最近,Google 开源了其 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,最新的 4.11 版内核已经用上了该算法。根据以往的传统,Google 总是先在自家的生产环境上线运用后,才会将代码开源,此次也不例外。 根据实地测试,在部署了最新版内核并开启了 TCP BBR 的机器上,网速甚至可以提升好几个数量级。 于是我根据目前三大发行版的最新内核,开发了一键安装最新内核并开启 TCP BBR 脚本。

本脚本适用环境

系统支持:CentOS 6+,Debian 7+,Ubuntu 12+ 虚拟技术:OpenVZ 以外的,比如 KVM、Xen、VMware 等 内存要求:≥128M 日期  :2017 年 05 月 15 日

关于本脚本

1、本脚本已在 Vultr 上的 VPS 全部测试通过。 2、当脚本检测到 VPS 的虚拟方式为 OpenVZ 时,会提示错误,并自动退出安装。 3、脚本运行完重启发现开不了机的,打开 VPS 后台控制面板的 VNC, 开机卡在 grub 引导, 手动选择内核即可。 4、由于是使用最新版系统内核,最好请勿在生产环境安装,以免产生不可预测之后果。

使用方法

使用root用户登录,运行以下命令:

wget –no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh
chmod +x bbr.sh
./bbr.sh

安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。 重启完成后,进入 VPS,验证一下是否成功安装最新内核并开启 TCP BBR,输入以下命令:

uname -r

查看内核版本,含有 4.11 就表示 OK 了

sysctl net.ipv4.tcp_available_congestion_control

返回值一般为: net.ipv4.tcp_available_congestion_control = bbr cubic reno

sysctl net.ipv4.tcp_congestion_control

返回值一般为: net.ipv4.tcp_congestion_control = bbr

sysctl net.core.default_qdisc

返回值一般为: net.core.default_qdisc = fq

lsmod grep bbr

返回值有 tcp_bbr 模块即说明bbr已启动。

内核升级方法

如果是 CentOS 系统,执行如下命令即可升级内核:

yum –enablerepo=elrepo-kernel -y install kernel-ml kernel-ml-devel

CentOS 6 的话,执行命令:

sed -i ‘s/^default=.*/default=0/g’ /boot/grub/grub.conf

CentOS 7 的话,执行命令:

grub2-set-default 0

如果是 Debian/Ubuntu 系统,则需要手动下载最新版内核来安装升级。 去这里下载最新版的内核 deb 安装包。 如果系统是 64 位,则下载 amd64 的 linux-image 中含有 generic 这个 deb 包; 如果系统是 32 位,则下载 i386 的 linux-image 中含有 generic 这个 deb 包; 安装的命令如下(以最新版的 64 位 4.9.3 举例而已,请替换为下载好的 deb 包):

dpkg -i linux-image-4.9.3-040903-generic_4.9.3-040903.201701120631_amd64.deb

安装完成后,再执行命令:

/usr/sbin/update-grub

最后,重启 VPS 即可。

更新日志:

2017 年 05 月 15 日: 1、脚本并没有更新,因为代码会自动获取最新版内核来安装。这里只是更新了下文章里的内核版本(Linux 内核版本号开挂了) 2017 年 02 月 22 日: 1、更新自动获取最新版 4.10 内核 。 2017 年 01 月 20 日: 1、新增自动获取并下载安装最新版内核的功能。 2017 年 01 月 13 日: 1、更新内核到 4.9.3。 2017 年 01 月 09 日: 1、更新内核到 4.9.1。

参考链接:

https://github.com/google/bbr/blob/master/Documentation/bbr-quick-start.md http://elrepo.org/tiki/tiki-index.php http://kernel.ubuntu.com/~kernel-ppa/mainline/

转载请注明:秋水逸冰 » 一键安装最新内核并开启 BBR 脚本