2020年3月24日星期二

Linux crontab任务


在linux下有两种方法来让一个命令或者脚本执行:

crontab : 执行一个任务一次或者多次.
at : 只执行一次.
crontab是通过读取一个crontab文件来工作,这是一个普通的文本文件,里面列出了要执行的任务。每行都含有要指定的任务的命令、参数与选项,以及要执行任务的时间。(cron 软件在后台运行并且经常检查 /etc/crontab 文件。cron 软件也检查 /var/cron/tabs 目录,搜索新的 crontab 文件。这些 crontab 文件存储一些 cron 在特定时间执行任务的信息。)

crontab的基本格式:

* * * * * command

几个星号分别为:分 时 日 月 周,最后是要执行的命令。
分:0~59
时:0~23
日:1~31
月:1~12
周:0~6(0表示星期天)
除了数字还有几个个特殊的符号就是* / – :
* 代表所有的取值范围内的数字
/ 代表每的意思
*/5 表示每5个单位
– 代表从某个数字到某个数字
, 分开几个离散的数字
配置文件的一些例子:
0 3 * * * /root/test.sh         “每天凌晨3点执行test.sh文件“
* 23-7/1 * * * /root/lnmp restart       “晚上11点到早上7点之间,每隔一小时重启lnmp套件“
*/30 * * * * /usr/sbin/ntpdate            “每半小时同步一下时间“
0 23 * * 6 /lnmp restart                     “每星期六的11 : 00 pm重启重启lnmp套件。“
*/1 * * * * echo “i am running.”>>/tmp/running.txt           “每隔1分钟向/tmp/running.txt写一个”i am running.”字符串。“
0 0 1 1-12/3 *  root  ./etc/apache2/ssl/ssl.sh    “从1月到12月,每3个月的每月1日00:00执行./etc/apache2/ssl/ssl.sh文件。“

编辑
vim /etc/crontab

运行
编辑crontab保存后不会自动执行,必须通过重启cron才可以,命令如下:
启动/etc/init.d/cron start
关闭/etc/init.d/cron stop
重启/etc/init.d/cron restart


debian下执行定时任务及问题解决
一、安装crond
apt-get install cron

二、配置文件
1.常用的cron命令:
/etc/init.d/crond start   //启动
/etc/init.d/crond stop    //关闭
/etc/init.d/crond restart //重启

有的系统可能init.d目录下没有crond,只有cron,其实也一样,只不过把crond换为cron:

/etc/init.d/cron start   //启动
/etc/init.d/cron stop    //关闭
/etc/init.d/cron restart //重启

判断crond 是否在运行:pgrep crond或者pgrep cron,如果有在运行则返回进程号。
杀掉crond进程:pkill crond或者pkill cron,此法可用在关闭或重启不了cron的时候。
配置cron定时任务:crontab -e,配置文件路径一般为/var/spool/cron/crontabs/root
这个是root用户的配置文件,其它用户是对应的用户名命名的文件,所以配置定时任务也可以

vi /var/spool/cron/crontabs/root
进入编辑。
crontab -u<用户名称>
查看配置文件:crontab –l

2.下面讲如何配置定时任务
基本格式 :

* * * * * command

几个星号分别为:分 时 日 月 周,最后是要执行的命令。

分:0~59
时:0~23
日:1~31
月:1~12
周:0~6(0表示星期天)

配置文件的一些例子:

0 3 * * * /root/test.sh 每天凌晨3点执行test.sh文件
* 23-7/1 * * * /root/lnmp restart 晚上11点到早上7点之间,每隔一小时重启lnmp套件
*/30 * * * * /usr/sbin/ntpdate 每半小时同步一下时间
0 23 * * 6 /lnmp restart 每星期六的11 : 00 pm重启重启lnmp套件。
* */1 * * * /usr/bin/mutt -s "hello" [email protected] </home/content.txt 每隔1小时发送一封电子邮件。

3.几个特殊符号的含义
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字

4.注意事项
很多朋友可能在用cron 的时候会遇到命令不执行的情况。遇到这种情况一般首先是检查cron有没有在运行,如果有在运行在重启一下cron,让它重新加载配置试试,再就是检查配置文件有没有格式错误,如果这些都没有问题,那我就讲下我是怎么处理的,把执行语句调频繁一些比如:

*/1 * * * * /root/test.sh

每分钟执行一次测试语句,看看任务有没有执行,如果有被执行,那就是软件,和配置文件都没有问题了,那很可能就是时间对不上的问题了的,比如时区不对,在我的实践中遇到,cron默认好像是按照天文时间来执行的,即使你的服务器时区是配置正确的也这样,不知为何,也可能是个例,比如我的时间是东8区,设定03:00点执行的命令,实际是11:00点执行的,这是也可以变通下,把时间+8设定为19:00,就可以达到03:00执行的目的了。

在 root 用户下输入 crontab -e  创建定时任务


三、出现错误问题:
crontab -e出现:

crontab: "/usr/bin/sensible-editor" exited with status 1

解决方法:

输入select-editr

出现

Select an editor. To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano <---- easiest
3. /usr/bin/vim.basic
4. /usr/bin/vim.tiny


我们选择3,更改编辑器

Choose 1-4 [2]: 3

2020年3月21日星期六

h5ai安装


h5ai 是一款功能强大的 PHP 文件目录列表程序,它提供多种文件目录列表呈现方式,支持 Apache、lighttpd、nginx、Cherokee 服务器,支持多国语言(有中文)。
你可以在线预览文本,图片,音频,视频等文件格式,以及打包下载,显示文件二维码等。

h5ai

环境要求

  • Apache / lighttpd / nginx / Cherokee 服务器
  • PHP 5.5+

下载

进入官网直接点击右侧的“DOWNLOAD”即可。
你也可以直接访问 https://release.larsjung.de/h5ai/ 来查看所有可供下载的版本(这一下载站点也运用了 h5ai)。

部署

  1. 将下载好的压缩包上传到服务器,解压,将其中的_h5ai文件夹放到网站根目录。
    当然,如果你只想让某个子目录使用 h5ai 的话,你可以放到任意一个你想的子目录中。
  2. 修改服务器配置:修改默认文档
    其实就是在站点默认文档中加入/_h5ai/public/index.php这一项
    • Apache: httpd.conf或者网站根目录的.htaccess

      1


      DirectoryIndex index.html index.php /_h5ai/public/index.php

    • lighttpd 1.4: lighttpd.conf

      1


      index-file.names += ("index.html", "index.php", "/_h5ai/public/index.php")

    • nginx 1.2: nginx.conf

      1


      index index.html index.php /_h5ai/public/index.php;

    • Cherokee 1.2: cherokee.conf

      1


      vserver!1!directory_index = index.html,index.php,/_h5ai/public/index.php

  3. 禁止/_h5ai/private中的内容被访问
    此目录下的文件不宜泄露,因此需要配置服务器以禁止此目录下的文件被访问。
    这里拿 nginx 的配置来做示例。
    在 nginx 当前网站的配置中加上以下内容:

    1
    2
    3


    location ~ ^/_h5ai/private/ {
    return 404;
    }

    如果在子目录中部署的话,前面要加上子目录的路径。

注意事项

  • 如果发现无法正常使用,检查 PHP 禁用函数,不能禁用execpassthruscandir
  • 如果排除了上面这个问题,仍然不能显示文件,请检查你的站点根目录中是否有创建站点时自动生成的index.html之类的默认首页文件,请删除。
  • 在 _h5ai 中不会显示任何以.开头的隐藏文件/文件夹,也不会显示任何以_h5ai开头的文件/文件夹。
    你也可以用正则表达式自定义不显示的文件/文件夹,这里在后面会讲,这可以用来保护隐私。
  • 不要使用目录别名(例如 Apache / nginx 的 alias),这会使 h5ai 无法得到目录下文件的地址。
  • 在 Ubuntu 上你可能需要额外安装PHP JSON支持包。

配置文件

h5ai 的配置文件位于/_h5ai/private/conf/options.json
此处只讲一些比较重要的常用配置,仅作解释,请勿照抄,根据自己实际需求更改true或者false等。

浏览相关


1
2
3
4
5
6
7
8
9
10
11
12
13


"view": {
//为true的话,用1024进制来计算文件大小
"binaryPrefix": true,
...
//隐藏名字与这些正则表达式匹配的文件/文件夹
"hidden": ["^\\.", "^_h5ai"],


"hidden": ["^\\.", "^_h5ai", "^private", "^public"],)






...
//如果目录里存在这些文件之一则不应用 _h5ai 来管理文件
//(即用于点击目录直接打开网站之类的)
"unmanaged": ["index.html", "index.htm", "index.php"],
//是否在新窗口中打开上面提到的这种目录
"unmanagedInNewWindow": false
},

自定义页头页脚


1
2
3


"custom": {
"enabled": true
},

开启之后,可以自定义页头页脚。
当你打开一个目录后,_h5ai 会检测当前目录中是否含有_h5ai.header.html_h5ai.footer.html,如果有的话则会当做页头/页脚显示。
如果找不到这两个文件,则会在当前目录或者依次去父级目录中寻找_h5ai.headers.html_h5ai.footers.html这两个文件,如果有的话,则会当做页头/页脚显示。
这个机制很简单,其实就是带s的就可以让本目录及子目录都显示这个页头/页脚,但是不带s的具有更高的优先级。

开启批量下载

如果要开启批量下载功能,还需要启用多选功能

1
2
3
4
5
6
7
8
9
10


"download": {
//是否启用批量下载
"enabled": false,
//批量打包方式,可选"php-tar", "shell-tar", "shell-zip"
"type": "php-tar",
//打包后的压缩包的名字,为 null 的话就使用当前目录的名字
"packageName": null,
//是否始终显示下载按钮
"alwaysVisible": false
},

开启文件地址二维码


1
2
3
4
5
6
7
8
9
10
11
12


"info": {
//是否允许显示信息侧边栏
"enabled": true,
//是否默认显示侧边栏
"show": true,
//是否显示二维码
"qrcode": true,
//二维码前景色
"qrFill": "#999",
//二维码背景色
"qrBack": "#fff"
},

设置默认语言为中文


1
2
3
4
5
6
7
8


"l10n": {
//用户是否可以自行选择语言
"enabled": true,
//默认语言,"zh-cn"为简体中文,其他支持的语言可以到"/_h5ai/conf/l10n"中查看
"lang": "zh-cn",
//根据浏览器自动判断语言
"useBrowserLang": true
},

启用搜索功能


1
2
3
4
5
6
7
8
9


"search": {
//是否启用搜索
"enabled": true,
//是否开启进阶搜索(需要开启"filter"设置项,具体请自行研究)
"advanced": true,
"debounceTime": 300,
//是否忽略例外
"ignorecase": true
},

启用多选功能


1
2
3
4
5
6
7
8


"select": {
//是否启用多选
"enabled": false,
//是否启用拖拽式多选
"clickndrag": true,
//是否启用多选框
"checkboxes": true
},

debian10 LNMP 手动初始安装



更新系统
apt-get install sudo
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
设置语言时区
dpkg-reconfigure locales
dpkg-reconfigure tzdata

sudo apt-get autoclean && sudo apt-get clean && sudo apt-get autoremove

安装V2ray
apt-get install curl
bash <(curl -L -s https://install.direct/go.sh)

安装nginx
sudo apt-get install nginx
配置检查
nginx -s reload
Nginx重启
/etc/init.d/nginx restart

nginx.pid" failed 修复:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
/usr/sbin/nginx -c /etc/nginx/nginx.conf


开启BBR及IPV4转发
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
echo "1" > /proc/sys/net/ipv4/ip_forward
sysctl -p
查看开启情况
sysctl net.ipv4.tcp_available_congestion_control

安装FRPS服务端并开机启动
systemctl enable frps.service
systemctl start frps.service
systemctl status frps.service

停止FRPS服务
systemctl stop frps

安装PHP7.3
sudo apt install  php7.3-fpm php7.3-curl php7.3-gd php7.3-intl php7.3-mbstring php7.3-mysql php7.3-imap php7.3-opcache php7.3-sqlite3 php7.3-xml php7.3-xmlrpc php7.3-zip php7.3-apcu php7.3-redis php7.3-imagick -y
重启PHP
systemctl restart php7.3-fpm
显示版本
php -v


安装mariadb数据库
apt install mariadb-server
sudo systemctl status mariadb
systemctl status mariadb
初始设置
mysql_secure_installation
命令行登录
mysql -uroot -p
输入密码成功登录后,建立一个新的用户,并给予最大的权限:
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' WITH GRANT OPTION;

安装phpMyAdmin
cd /var/www/default
wget https://files.phpmyadmin.net/phpMyAdmin/5.0.1/phpMyAdmin-5.0.1-all-languages.zip
unzip phpMyAdmin-5.0.1-all-languages.zip -d phpMyAdmin

安装Cockpit管理面板
对于Debian 9,您必须启用backports仓库后安装:
echo 'deb http://deb.debian.org/debian stretch-backports main' > \
 /etc/apt/sources.list.d/backports.list
apt-get update
Debian 10直接安装
Install the package:
sudo apt-get install cockpit

2020年3月17日星期二

永久关闭swap分区


步骤:
查看swap文件信息
swapon -s

第一步 关闭swap分区:
swapoff -a
( swapon -a 开启)

第二步修改配置文件 - /etc/fstab
删除swap相关行 /mnt/swap swap swap defaults 0 0 这一行或者注释掉这一行
第三步确认swap已经关闭
free -m
若swap行都显示 0 则表示关闭成功
第四步调整 swappiness 参数
echo 0 > /proc/sys/vm/swappiness # 临时生效
vim /etc/sysctl.conf # 永久生效
#修改 vm.swappiness 的修改为 0
vm.swappiness=0
sysctl -p # 使配置生效


快速方法:
#(1)临时关闭swap分区, 重启失效;
swapoff -a
#(2)永久关闭swap分区
sed -ri 's/.*swap.*/#&/' /etc/fstab
#或者
vim /etc/fstab
# swap was on /dev/sda11 during installation
#UUID=0a55fdb5-a9d8-4215-80f7-f42f75644f69 none swap sw 0 0
注释掉SWAP分区项,即可

N2N P2P VPN Debian/Ubuntu Linux下的编译安装方法


先安装编译依赖
apt-get install g++
apt-get install gcc
apt-get install cmake libssl-dev

取消设置CC和CXX,或者使用系统编译器(删除/ local):
export CC=/usr/bin/gcc
export CXX=/usr/bin/g++

#v2s版本
git clone https://github.com/meyerd/n2n.git
cd n2n/n2n_v2
mkdir build
cd build
cmake -build . ..
make
make install

运行:
supernode -l 10088


#n2n版本
git clone https://github.com/ntop/n2n.git
cd n2n
cmake -build . ..
make
make install

运行:
supernode -l 10086

2020年3月2日星期一

在OpenMediaVault5.0系统下搭建Wordpress的坑

OpenMediaVault5.0的部分使用体验
装好发现OpenMediaVault5.0的插件真的很少 ,,,连mysql,nginx,这些都必须得自己安装。

一切就绪了,准备安装Wordpress,报错以下信息
Your PHP installation appears to be missing the MySQL extension which is required by WordPress.

解决过程折腾过程耗时众多,首先OpenMediaVault5.0默认安装的PHP7.3,没有安装phpize

安装phpize,(先更新下源,否则可能提示找不到)
apt-get install php7.3-dev

安装PHP mysql扩展包
apt-get install php7.3-mysql
重启PHP进程
/etc/init.d/php7.3-fpm restart