OpenWrt插件Passwall推荐配置

0、重要!!!网络——DHCP/DNS——高级设置——禁止解析 IPv6 DNS 记录(√打钩)

1、节点订阅这一栏,只推荐订阅ss节点,并且Shadowsocks 节点使用类型改为“shadowsocks-rust”,Sing-box 域名解析策略改为“仅IPv4”

2、高级设置如图

3、规则管理把所有√打上,然后保存&应用并手动更新一次

4、模式只推荐中国列表以外

5、DNS只推荐以下两种,并且不要额外使用mosdns、smartdns诸如此类的插件,如果一定要使用,请务必关掉他们的自动更新(作用是不让他们重启,参考https://github.com/xiaorouji/openwrt-passwall/issues/2664

6、(可选)自己添加一个Socks节点来达到自动切换的效果,具体步骤参考https://wp.gxnas.com/13924.html

PVE下快速更新OpenWrt固件方法

1、上传最新的img/iso镜像文件至local(pve)-ISO镜像,去除中文名,只用英文、数字和字符,并拷贝镜像上传地址。

2、创建新的虚拟机。

操作系统:选择不使用任何介质
系统:全部默认
硬盘:删除磁盘
CPU:核心改为4
内存:1G足矣
网络:全部默认
完成:创建后不启动

3、将OpenWrt镜像导入刚刚创建好的虚拟机,在pve-Shell里执行如下命令

101是你刚才创建的虚拟机标签,/var/lib/vz/template/iso/20240510-openwrt-x64-R24.5.1.img是你刚才上传所复制的地址。

qm importdisk 101 /var/lib/vz/template/iso/20240510-openwrt-x64-R24.5.1.img local-lvm

4、设置虚拟机磁盘和开机启动/引导顺序

删除CD/DVD驱动器(ide2);
编辑未使用的磁盘0为sata格式;
调整引导顺序,将 sata0 磁盘启用并调整到第一位;
按顺序添加虚拟网卡,将之前虚拟出来的网卡都依次添加进去,还是使用默认VirtIO模型,第一个添加的网卡将会是WAN口。

5、回到现在的OpenWrt后台地址,生成备份,lucky大吉插件需要单独生成备份。

6、启动新的虚拟机,关闭之前的虚拟机。

修改电脑地址为新虚拟机的默认ip网段地址,访问新的虚拟机恢复备份;
恢复备份后重新设置电脑地址为自动获取;
手动恢复下lucky大吉等无法被一起备份的插件设置;
手动启动下诸如mosdns等恢复备份后不会自动启动的插件。

完毕。

PS:若是之前已经有创建好的虚拟机,只需要执行步骤1、3、5、6即可。

OpenWrt桥接后访问光猫方法

1、网络-接口,找到WAN(pppoe-wan),修改-高级设置-使用网关跃点,修改为较小数值,比如1。

2、添加一个新接口,命名随意,比如命名为MAO(光猫的意思)

协议选“静态地址”,包括以下接口这里绑定WAN口,我这里是eth1,“以太网适配器: “eth1” (wanwan6)”

IPv4 地址随便填一个光猫所在ip段的,我的光猫是192.168.1.1,我这里就填的192.168.1.2,IPv4 网关填光猫地址192.168.1.1。

3、修改刚刚设置好的接口网关跃点为较大值(代表MAO的优先级低于WAN),比如我这里是60。

4、保存更改,便可以直接访问光猫地址了。

24/07/07更新 方法二

1、新建一个防火墙区域,取名modem,设置如下

2、添加一个新接口,同上一样,不用设置网关跃点,只是防火墙区域选择刚才创建的modem,若创建后无法上网,重启openwrt即可。

群晖docker容器版emby添加弹弹play弹幕

服务器端添加代码,可以实现web端弹幕播放,使用ssh的话可以用以下代码

docker ps -a //查看容器id
docker exec -it emby容器id /bin/bash  //进入容器

或者使用群晖自带的终端,container manager中找到emby,操作>>>打开终端机>>>新增(通过命令启动—输入/bin/ash)>>>方案①输入如下代码,修改index.html,在文本最后的如代码所示的位置插入脚本。

vi /system/dashboard-ui/index.html

……………………</script>//在这里插入,提行后与上面的<script scr=……>对齐//
</body>
</html>

     <script scr=……></script>
     <script type="text/javascript" src="https://danmaku.movie.kg/ext.js"></script>
     <link rel="stylesheet" href="https://danmaku.movie.kg/ext.css"/>
</body>
</html>
//插入完成后大概这样

最后按下esc以后输入:wq保存并退出(wq如果输入不了也用鼠标右键复制进去),接着重启一下emby的docker容器就可以了,但是这种方法在重新compose构建后会被初始化重置然后失效。

我更推荐方案②,将index.html映射出来,和emby其他配置一样保存到宿主机本地。首先我们得复制容器内的index.html,操作>>>打开终端机>>>新增(通过命令启动—输入/bin/ash)>>>方案②输入如下代码,复制index.html到/data(/data为创建容器时,映射的本地媒体文件夹),然后修改好index.html后,在emby的docker compose命令中添加一段volumes目录映射到/system/dashboard-ui/index.html即可。

cp /system/dashboard-ui/index.html /data

- /volume1/docker/docker-compose/emby/index.html:/system/dashboard-ui/index.html

上面这种在客户端或网页的 index.html </script> 这里添加 </body></html> 标签,插入以下内容:

<script type="text/javascript" src="https://danmaku.movie.kg/ext.js"></script>
<link rel="stylesheet" href="https://danmaku.movie.kg/ext.css"/>

上述方法,只能实现web端的弹幕添加,常用的安卓端、IOS、PC端,可以去https://danmaku.movie.kg/下载对应的客户端。

TV端暂时没有方法实现,残念。

群晖开启macvlan网络并通过compose命令安装docker指定ip

群晖开启macvlan网络,ssh登陆群晖

sudo -i //获取root权限
sudo ip link set eth0 promisc on //混杂模式
docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=eth0 macnet //将192.168.2.0替换为你的网段,192.168.2.1替换为你的网关,macnet可以随便取名
docker create --name qbittorrent4ab --network macnet --ip=192.168.2.33 superng6/qbittorrentee:latest //创建容器qbittorrent4ab为容器名,可任意更改192.168.2.33为你固定的ip,superng6/qbittorrentee:latest为你拉取的容器镜像

这里更推荐使用compose命令(免去ssh登陆)来进行基于macvlan网络的容器创建,参考如下——

version: "3.8"

services:
  AutoBangumi:
    image: "estrellaxd/auto_bangumi:latest"
    container_name: AutoBangumi
    volumes:
      - ./config:/app/config
      - ./data:/app/data
    ports:
      - "7892:7892"
    restart: unless-stopped
    network_mode: macnet
    networks:
      my-macvlan:
        ipv4_address: 192.168.2.3
    environment:
      - TZ=Asia/Shanghai
      - AB_METHOD=Advance
      - PGID=1026
      - PUID=100
      - UMASK=022

以上是群晖的compose演示,比较简单,一看就会,再来一个——

version: "2.3"
services:
  emby:
    image: lovechen/embyserver:latest
    container_name: embyserver-cp
    network_mode: bridge
    environment:
      - UID=1026
      - GID=100
      - GIDLIST=100,0
    volumes:
      - /volume1/docker/emby:/config
      - /volume1/1/raws-Music:/data
      - /volume4/4:/data1
      - /volume3/3:/data2
      - /volume2/2:/data3
      - /volume1/CloudNAS/CloudDrive2/百度网盘/apps/Cloud Sync/Bangumi:/data4
    ports:
      - 8095:8096 # HTTP port
    devices:
      - /dev/dri:/dev/dri # VAAPI/NVDEC/NVENC render nodes
    restart: unless-stopped

qbittorrent容器会略微有点不一样,随便指定网路名会一直报错,这里找到了如下参考案例:

version: "2.1"
services:
  qbittorrent:
    image: linuxserver/qbittorrent:latest
    container_name: qbittorrent-pt
    restart: always
    tty: true
    networks: 
      macnet:
        ipv4_address: 192.168.2.4
        aliases:
          - qbittorrent
    hostname: qbitorrent
    volumes:
      - /volume1/docker/qbittorrent-pt:/config
      - /volume3/3/PT:/downloads
    environment:
      - WEBUI_PORT=8080   # WEBUI控制端口,可自定义
      - TZ=Asia/Shanghai  # 时区
      - PUID=1026
      - PGID=100
networks: 
  macnet:
    external: true
version: "2.1"
services:
  qbittorrent:
    image: johngong/qbittorrent:4.1.9.1
    container_name: qbittorrent4191
    restart: always
    tty: true
    networks: 
      macnet:
        ipv4_address: 192.168.2.5
        aliases:
          - qbittorrent
    hostname: qbitorrent
    volumes:
      - /volume1/docker/qbittorrent4.1.9.1:/config
      - /volume1/1/downloads/pt:/Downloads
    environment:
      - QB_WEBUI_PORT=8989   # WEBUI控制端口,可自定义
      - TZ=Asia/Shanghai  # 时区
      - PUID=1026
      - PGID=100
      - UMASK=22
      - QB_EE_BIN=false
networks: 
  macnet:
    external: true

另外推荐下矿神源(https://spk7.imnks.com/)的CloudDrive2套件(https://www.clouddrive2.com/),云上番剧,启动!

软路由刷PVE并安装OpenWrt折腾记录

因为又入手了一台J4125的工控机,那就只有玩起来了www

在已有的网络环境下(主要是ip段能自动获取,安装好op后能保持前后一致)插入网线,接好HDMI和鼠标、键盘,以及安装U盘(USB接口不够只能用usb集线器了)

选第一个

安装完毕后显示器和键鼠切到电脑,访问刚才设置好的ip:8006进行访问。这里推荐https://gitee.com/spoto/PVE_Generic_AIO的教程,非常详细。

后续换阿里源(https://522ip.com/index.php/archives/542/
以及安装温度显示(https://www.right.com.cn/forum/thread-6754687-1-1.html

准备一个OpenWrt系统,这里无脑推荐YAOF——https://github.com/QiuSimons/YAOF
下载X86-ext4的版本,比如X86-GC404-Docker-2023-11-16-23.05.2-ext4.zip

按照司波图的教程将硬盘img改为iso进行上传并修改参数安装,重点来了,启动之前如果你机器是2个以上的网口,就直通n-1个网口给op,否则全部直通给op,直通后启动虚拟机。
YAOF的默认管理地址 192.168.1.1,我们需要手动将电脑ip改为192.168.1.x,掩码会自动生成255.255.255.0,其他不用填,然后就可以访问op的192.168.1.1地址了,用户名root,密码password,进行登陆并修改密码和后台ip地址和之前网段一样,比如我是设置成192.168.2.1,电脑dhcp修改为自动获取,重启op,并在PVE里设置op开机自动启动,基本配置完成。

这里推荐下op的配置方案,家里用无脑推荐op单主路由,OpenClash+MosDNS的dns方案(MosDNS重定向53端口到5335,Clash使用Redir-Host模式[推荐使用meta内核的混合模式],关闭本地DNS劫持,NameServer和FallBack只启用一个UDP,127.0.0.1:5335,指向MosDNS),微信推送插件推流通知给TG,WireGuard作为VPN回家方案(教程https://iyzm.net/openwrt/1736.html)。
另外meta推荐开启TCP并发,和统一延迟(设置15s),启用 GeoIP Dat 版数据库(需预先下载)。

另外推荐一个op用来反向代理/获取ssl证书的插件lucky,地址https://github.com/gdy666/lucky

全部安装后如果你觉得现在状态还不错,那一定要记得备份!!!推荐关机状态的备份和快照都存一份。
另外由于网口直通给了op导致备份时/恢复备份时,op需要处于停止状态,网口无法使用,网页端无法进行操作(草,我当时网口全部直通给了op,人都麻了),这时就需要接到没有直通的网口,然后手动修改电脑ip端和PVE一样,来进行操作。如果是备份可以直接拔电源再通电来启动(不推荐,我就是这样炸了一次)。

利用phpMyadmin指令将网站快速https化

废话不多说,直接切入正题,本站自从开启了ssl证书访问后,我一直发现网站总是出现这样的提示——“您与此网站之间建立的连接并非完全安全,攻击者可能能够看到您正在此网站上浏览的图片,并通过编辑这些图片让您受骗”。

然而最近因为个人的一些事情比较忙,一直没管过,本篇文章即是闲暇之余通过“查询借鉴”后找到的对应这个问题的解决方法。

首先,你得有一个ssl证书,具体可获得的渠道很多,有免费的有收费的,有期限长的有期限短的,网上文章也很多,针对不同平台获取和设置的方法也不一样,这里就不多赘述了(其实是这个人完全不懂的说/小声bb)。

先备份! 

先备份!

先备份!

重要的事情说三遍,这里的备份不仅仅指网站上传的数据、主题(当然wordpress整个目录备份是最稳妥的),还有重要的mySQL数据库。

第二步,SSL证书安装后,https版本就可以访问了。原来网站上的所有URL都需要改到https版本,包括链接、图片、JS等,所以可能需要修改文章数据库、模板、插件等。

特别注意,“站点主题设置”下的所有链接、“外观——小工具——侧边栏”的所有链接。

这样,绝大部分导航中的链接就由wordpress系统自动改为https版本了。但很可能还有一些导航性质的链接是硬编码在模板中的,比如某些主题下面的版权声明,那是人工写在模板里的,别忘了改。

第三步,以前帖子正文中人工加的内部链接也需要自己改。当时小白的我想到的第一个方法是手工一个一个改,后来想了一下,天啦噜,这要改死人啊……肯定能实现自动化的。最后找到了如下方法——

如果使用phpMyadmin,用下面指令跑一下数据库就行了:

update wp_posts set post_content = replace(
post_content, "http://sirongzi.day/",
"https://sirongzi.day/");

注意选中你存放wordpress的数据库再进行操作不然会报错。

最后,你就可以打开你的网站访问https然后看是否有小锁图标了,如果还没有可以利用Chrome浏览器的开发人员工具,按F12打开,在Sources界面一个个看下是哪儿的链接是非https然后再想办法解决了。

利用docker快速安装Aria2+AriaNg教程

此文是小白文,我尽量让小白们直接复制粘贴就可以完成所有操作,另:本人也是小白。

以下所有代码均基于centos7 64bit。

一、前言(一些废话):

(一)什么是docker

Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI)

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroupnamespace,以及AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

小白们理解为docker就是一个速度更快的基于Linux 内核的虚拟机就行啦。

(二)doker的版本

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。

Docker CE 分为 stable, test, 和 nightly 三个更新频道。每六个月发布一个 stable 版本 (18.09, 19.03, 19.09…)

(三)容器和镜像

1、容器

(1)什么是容器

容器(Container)是Docker的核心组件之一,它是用于运行镜像的一个沙箱环境,是一个从镜像创建的应用运行实例,镜像打包、构建完成后最终都会运行于容器中。容器具有良好的隔离性,容器之间是相互隔离、互不可见。

(2)容器的基本操作

①创建并运行容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

如:

sudo docker run -i -t ubuntu /bin/bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
8aec416115fd: Pull complete 
695f074e24e3: Pull complete 
946d6c48c2a7: Pull complete 
bc7277e579f0: Pull complete 
2508cbcde94b: Pull complete 
Digest: sha256:71cd81252a3563a03ad8daee81047b62ab5d892ebbfbf71cf53415f29c130950
Status: Downloaded newer image for ubuntu:latest

②查看容器

docker ps命令只能看到正在运行中的容器,查看所有容器需要增加-a参数。

sudo docker ps -a

③启动容器

sudo docker start Container-NAME
Container-NAME

④停止容器

sudo docker stop Container-NAME

⑤删除容器

sudo docker rm Container-NAME

2、镜像

(1)什么是镜像

镜像(Image)是构建容器的基础,镜像是一种分层结构的文件系统。我们可以从仓库(Repository)中下载镜像,而仓库又保存在Registry中,Docker Hub是Docker官方提供的Registry。即可以从Docker Hub的顶层仓库中免费获取官方提供的基于镜像,又可以将自已构建的镜像存放于Docker Hub的用户仓库中。

镜像是一个只读的层(layer),由文件系统叠加构成。而镜像又是容器(Container)的构成单元,我们一般会将应用构建成标准的镜像组件,一或多个镜像叠加又构成了容器。

当从一个镜像启动容器时,Docker会从该镜像的最顶层加载一个读/写文件系统,而我们的应用就会运行于这个读/写层中。

(2)镜像的基本操作

①显示所有镜像

sudo docker images

②拉取(下载)镜像

使用docker run命令从镜像启动容器时,如果镜像在本地不存在,那么首先会从Docker Hub中下载该镜像,默认版本号为latest。
为了加快容器启动时间,在运行容器前,可以通过docker pull命令将镜像先下载到本地。

sudo docker pull IMAGE:TAG

③删除镜像

sudo docker rmi IMAGE

二、正文(就是代码啦,不多bb)

(一)安装docker CE

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce

(二)运行docker CE

sudo systemctl enable docker
sudo systemctl start docker

(三)下载镜像

docker pull wjg1101766085/aira2-ng:0.0.1

(四)创建并运行容器

sudo docker run -d \
--name aria2 \
-p 6800:6800 \
-p 6880:80 \
-p 6888:8080 \
-v /DOWNLOAD_DIR:/data \
-v /CONFIG_DIR:/config \
-e SECRET=SECRET_CODE \
wjg1101766085/aira2-ng:0.0.1

说明:

/DOWNLOAD_DIR……下载目录,不知道怎么设置的可以/home/DOWNLOAD

/CONFIG_DIR……设置目录,不知道怎么设置的可以/home/CONFIG

SECRET_CODE……密码,填写在6880-AriaNg设置-PRC 你的IP地址-Aria2 RPC 密钥 处

http://host:6880 打开 web 管理界面

http://host:6888 浏览下载目录

三、附录

https://yeasy.gitbooks.io/docker_practice/install/centos.html

https://itbilu.com/linux/docker/4kkTyS8Pf.html

https://itbilu.com/linux/docker/EyAwJ6hDG.html

https://hub.docker.com/r/wjg1101766085/aira2-ng/

利用Dropbox自动备份网站数据及SQL数据库的折腾记录

讲道理网上很多教程的,为啥我就还是要写呢?【其实我很懒的】因为我——就要!

首先是准备一个Dropbox账号,这个hin简单的,推荐使用google邮箱注册,注册完成后打开Apps界面。

点击 Create App 按钮,创建一个 App:

这里注意app的名字是任意的,当然啦,dropbox不允许出现相同的名字,所以别人注册的名字就用不了啦,这里推荐使用自己网站的域名进行create。

创建好后进入自己的app,如下图,点击画圈的图标,也就是Generated  access token:

当然这一步可以暂缓,先SSH进入自己的VPS,可以通过putty和Xshell进入(em……如何进入就不用我说了吧,我才不是就蹭蹭的那种呢)

使用代码获取Dropbox Uploader,这里提供两种,我是通过第二种获得的,不要问我为什么,我——不!知!道!

git clone https://github.com/andreafabrizi/Dropbox-Uploader.git

curl https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh -o dropbox_uploader.sh

在执行安装完Dropbox后会自动弹出请求输入access token的语段,这个时候把刚刚的access token输入进去并且y确定就好了(如果没有弹出来……自己google去……抓头)

然后赋予dropbox_uploader权限(大概就是为sh文件增加可执行权限),这样:

chmod +x dropbox_uploader.sh

可以通过./dropbox_uploader.sh info查看自己刚才绑定的信息,如果提示错误,试试在前面加sh空格再执行。

到了这一步,我们的所有准备工作就已经准备完毕(雾)

不不,我们还要安装7zip压缩软件,因为一般建站传上去的文件名称中或多或少都会不可避免的有一些汉字存在,而在Linux环境下只有rar和7z格式才支持中文编码,而rar又是收费的,所以我推荐7z,这里执行以下命令进行安装:

yum install p7zip

我是centos系统啦,所以是这个命令,如果是Debian的话可能是使用:apt-get install p7zip,如果以后需要卸载7zip,使用yum -y remove p7zip试试看。

好了,到了这一步,我们的所有准备工作就已经准备完毕w

下面开始吹逼——(/手动滑稽)

经过尝试,我使用以下代码(不要问我怎么获得的,不会google啊,口亨口即):

7za a -t7z -r /tmp/backup.7z /data/www/sirongzi.day -mx1

这个意思就是把/data/www/sirongzi.day目录下的所有文件使用低压缩方式添加到/tmp/backup.7z压缩包中。

然后利用刚才安装的dropbox_uploader进行上传:

./dropbox_uploader.sh upload /tmp/backup.7z /backup/backup.7z

大概意思就是使用dropbox_uploader将位于/tmp/backup.7z的文件上传到绑定的dropbox/app/backup目录下并命名为backup.7z这样。

然后删除刚才的压缩包:

rm -f /tmp/backup.7z

-f就是不提示直接删除,这样。

接着是SQL数据库:

  • [uname] 数据用户名
  • [pass] 数据密码
  • [dbname] 数据库名称
  • [backupfile.sql] 备份文件

导出数据:

mysqldump –opt -u [uname] -p[pass] [dbname] > [backupfile.sql]

注意opt前面的两个–是没有空格的,然后-p后面的密码也是不加空格的。

需要导出压缩的数据库可以这样:

mysqldump –opt -u [uname] -p[pass] [dbname] | gzip -9 > [backupfile.sql.gz]

如果以后需要使用这个文件进行恢复操作的话可以执行以下命令:

mysql -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

然后便是将导出的数据库文件上传到dropbox,标准语句是这样:

./dropbox_uploader.sh upload [sourcefile] [remotefile]

我的是这样:

mysqldump –opt -u 数据库用户名 -p数据库密码 需要导出的数据库名称 > backupfile.sql

./dropbox_uploader.sh upload backupfile.sql /backup/backupfile.sql

大概意思就是……这么简单自己看……(懒)

然后作为一个强迫症,还是要删除刚才导出的数据库文件的:

rm -f /root/backupfile.sql

这里为啥我知道这个被我命名为backupfile.sql的文件在root下面呢,这里我使用了find命令:

find / -name “backupfile.sql”

大概意思就是从根目录下查找backupfile.sql并给出所在位置。

铛铛铛铛!完成!(大雾)

喂喂,说好的jo本呢。(憋打我,听我说完)

最后将上面你自己编写的语句按顺序编写到notepad++里面,并且每个语句间进行提行并将文档转化为UNIX格式(具体操作编辑-文档格式转化-转化为UNIX格式,这里感谢@卡布

然后我是通过FileZilla软件将命名为backup.sh的jo本上传到/root/backup.sh(这里就不说咋个弄了,麻烦……)

一样的赋予backup.sh执行权限:

chmod +x /root/backup.sh

到这里可以尝试一下该shell脚本是否能正常运行:

sh ./backup.sh(我必须加sh不知道为什么……)

最后利用crontab命令添加定时任务:

crontab -e

打开crontab文件,注意这里是使用的VIM文字编辑工具,大概需要的操作如下(以下是一些废话):

vim简介:Linux世界几乎所有的配置文件都是以纯文本形式存在的,而在所有的Linux发行版系统上都有vi编辑器,因此利用简单的文字编辑软件就能够轻松地修改系统的各种配置了,非常方便。vi就是一种功能强大的文本编辑器,而vim则是高级版的vi,不但可以用不同颜色显示文字内容,还能进行诸如shell脚本、C语言程序编辑等功能,可以作为程序编辑器。

vim有三种模式:一般模式、编辑模式、命令模式。

下面是一些可以在一般模式中使用的命令:

  • x:删除一个字符
  • u :撤销一个操作(相当与 Ctrl+z)
  • dd :删除一行内容
  • dw :删除一个单词
  • yy :复制一行内容
  • yw :复制一个单词
  • p :粘贴一个之前删除或复制的行或者单词
  • e :跳到下个单词(LCTT 译注:词尾)(比单纯用方向键更快)
  • r :替换一个字母(按 r ,松开,然后再按新字母)

(当然我都不用……)

按i键(当然用a、o或者r也可以,大小写区分,具体区别见下)进入编辑模式,这时可以用←、→(不是表情!)移动光标。

①进入插入模式(6个命令)
【i】 从目前光标所在处插入
【I】 从目前光标
【a】 从当前光标所在的下一个字符处开始插入
【A】 从光标所在行的最后一个字符处开始插入
【o】 英文小写字母o,在目前光标所在行的下一行处插入新的一行并开始插入
【O】 英文大写字母O,在目前光标所在行的上一行处插入新的一行并开始插入
②进入替换模式(2个命令)
【r】 只会替换光标所在的那一个字符一次
【R】 会一直替换光标所在字符,直到按下[ESC]键为止
【[ESC]】 退出编辑模式回到一般模式

③一般模式切换到命令行模式
【:w】 保存文件
【:w!】 若文件为只读,强制保存文件
【:q】 离开vi
【:q!】 不保存强制离开vi
【:wq】 保存后离开
【:wq!】 强制保存后离开
【:! command】 暂时离开vi到命令行下执行一个命令后的显示结果
【:set nu】 显示行号
【:set nonu】 取消显示行号
【:w newfile】 另存为

所以,我的操作是,i→编辑→:wq(惊不惊喜意不意外w)

偏题了,回到crontab命令:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .—————- minute (0 – 59)
# | .————- hour (0 – 23)
# | | .———- day of month (1 – 31)
# | | | .——- month (1 – 12) OR jan,feb,mar,apr …
# | | | | .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

举个栗子吧——

每天早上6点
0 6 * * * echo “Good morning.” >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

每两个小时
0 */2 * * * echo “Have a break now.” >> /tmp/test.txt

晚上11点到早上8点之间每两个小时和早上八点
0 23-7/2,8 * * * echo “Have a good dream” >> /tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * 1-3 command line

每小时执行/etc/cron.hourly内的脚本
01 * * * * root run-parts /etc/cron.hourly

每天执行/etc/cron.daily内的脚本
02 4 * * * root run-parts /etc/cron.daily

每星期执行/etc/cron.weekly内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly

每月去执行/etc/cron.monthly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly

注意: “run-parts”这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。

上面抄的……我的是很简单的这样(还在测试中……):

44 4 * * 0 /root/backup.sh

每星期天4:44执行backup.sh,酱w

以后想到啥子再说啦,好累,趴~

Linux学习笔记(二)

安装CentOS操作系统,分区要求:

(1)/boot分区分200MB;

(2)swap分区分内存的2倍(比如1GB内存就分2GB的swap分区,如果内存大于等于4GB,swap分8GB即可);

(3)/分区分20GB;

(4)剩余空间给/data分区。

设置网络

# dhclient(自动获取IP地址

# ip addr(查看IP地址信息

# ping -c 4 sirongzi.day(测试是否能联网)

手动给CentOS 7设置IP地址:

# vi /etc/sysconfig/network-scrpts/Networkcardname(网卡名字可以通过ip addr查看)

然后按字母i键进入编辑模式;

可以增加几行字符如下:

IPADDR=192.168.188.128

NETMASK=255.255.255.0

GATEWAY=192.168.188.2

DNS1=119.29.29.29

完成编辑后按Esc键接着输入“:wq”并回车,退出并保存更改;

# systemctl restart network.service

接着查看下IP地址并ping下是否接通。

给CentOS 7安装图形操作界面

# yum groupinstall -y “GNOME Desktop”

# init 5

图形模式和命令行模式的切换:按Ctrl+Alt+F1进入图形界面,按Ctrl+Alt+F2(F3-F6)返回命令行模式。

一些常用的快捷键

Ctrl+C:终止当前命令

Tab:自动补全

Ctrl+D:exit

Ctrl+Z:暂停当前进程

Ctrl+L:清屏

Ctrl+A:让光标移动到命令的最前面

Ctrl+E:让光标移动到命令的最后面

查询帮助文档

# man

关机、重启

# shutdown -h +10(分钟)

# shutdown -h now

# shutdown -h 20:25

# shutdown -r now

# shutdown -r +10

# reboot

# halt(关闭系统,同shutdown -h now和poweroff)

关机:shutdown -h now、halt、poweroff、init 0

重启:shutdown -r now、reboot、init 6

退出移动版