Skip to content

Commit 6aec865

Browse files
committed
Linux 使用技巧
1 parent f7d5d08 commit 6aec865

2 files changed

Lines changed: 248 additions & 0 deletions

File tree

docs/linux/linux-crontab.md

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
---
2+
title: Linux定时任务crontab的使用
3+
date: 2018-05-23 22:14:25
4+
url: linux/linux-crontab
5+
tags:
6+
- Crontab
7+
- 定时任务
8+
categories:
9+
- Linux
10+
thumbnail: /static/blog/images/logo/linux-crontab.png
11+
---
12+
13+
![crontab logo](https://cdn.jsdelivr.net/gh/niumoo/cdn-assets/2019/d82883e1a2b8c5b9e949e80047091e74.jpg)
14+
15+
16+
17+
### crontab介绍
18+
19+
crontab经常被用于设置周期性任务,Linux系统本身就存在的许多计划性任务是由cron服务来控制,因此默认情况下,这个cron服务也是默认启动的。crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。Linux 系统为使用者控制计划任务提供的命令:`crontab 命令`
20+
<!-- more -->
21+
22+
### crontab文件
23+
`Linux的系统任务调度文件`,可以在/etc/crontab文件中查看系统计划任务信息。在CentOS7中文件内容如下:
24+
```shell
25+
[root@VM_105_191_centos ~]# cat /etc/crontab
26+
SHELL=/bin/bash #使用哪个shell
27+
PATH=/sbin:/bin:/usr/sbin:/usr/bin #系统命令的路径
28+
MAILTO=root #任务执行结果通知给root用户,不写则不通知
29+
30+
# For details see man 4 crontabs
31+
# 任务命令格式说明
32+
# Example of job definition:
33+
# .---------------- minute (0 - 59)
34+
# | .------------- hour (0 - 23)
35+
# | | .---------- day of month (1 - 31)
36+
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
37+
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
38+
# | | | | |
39+
# * * * * * user-name command to be executed
40+
```
41+
`Linux的用户任务调度文件`,系统会把用户使用crontab工具定制的周期性计划任务保存在:`/var/spool/cron/`目录中,里面的文件名和用户名相同,对应每个用户,可以直接查看。
42+
43+
### 计划任务时间设置
44+
上面的Crontab文件没有任何计划任务,但是有一份详细的crontab文件格式说明,我们按照文件中的内容可以很好的理解五个*号区域所代表的意思。
45+
```shell
46+
# 指令格式说明:
47+
# .---------------- 分 (0 - 59)
48+
# | .------------- 时 (0 - 23)
49+
# | | .---------- 日 (1 - 31)
50+
# | | | .------- 月 (1 - 12)
51+
# | | | | .---- 星期 (0 - 6) (星期日=0 或 7)
52+
# | | | | |
53+
# * * * * * 操作指令
54+
```
55+
这里需要注意的是,如果日期和星期同时被设定,那么其中的一个条件被满足时,指令便会被执行。
56+
在上面的每个区域中,
57+
58+
| 说明 |
59+
| :-------- : |
60+
|星号('*')代表任何可能的值。例如,在“小时域”里的星号等于是“每一个小时”,等等 |
61+
|逗号(',')分开的值,例如:“1,3,4,7,8” |
62+
|连词符('-')指定值的范围,例如:“1-6”,意思等同于“1,2,3,4,5,6” |
63+
|某些cron程序的扩展版本也支持斜线('/')操作符,例如,“*/3”在小时域中等于“0,3,6,9,12,15,18,21”等被3整除的数; |
64+
65+
实例:每1分钟输出一次hello
66+
命令:\* \* \* \* \* command
67+
68+
实例:每小时的第3和第15分钟执行
69+
命令:3,15 \* \* \* \* command
70+
71+
实例:在上午8点到11点的第3和第15分钟执行
72+
命令:3,15 8-11 \* \* \* command
73+
74+
### crontab命令
75+
命令中的`File`是命令文件的名字,在这个文件中编写了符合上述规则的计划任务,命令则表示将这个File做为crontab的任务载入到crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。载入crontab之后可以在`/var/spool/cron/[user]`文件查看计划任务信息。
76+
```shell
77+
用法:
78+
crontab [参数] 文件
79+
crontab [参数]
80+
81+
常用参数:
82+
-u <user> 配置用户计划任务,默认当前用户
83+
-e 编辑用户计划任务,默认当前用户
84+
-l 列出用户计划任务,默认当前用户更
85+
-r 清空用户计划任务,默认当前用户
86+
-i 删除用户计划任务,有确认提示
87+
```
88+
89+
所以,如果要把一个编写好的crontab文件添加到当前用户的计划任务,可以使用
90+
$ crontab crontab_file
91+
92+
### 一些示例
93+
实例1:每1分钟执行一次myCommand
94+
\* \* \* \* \* myCommand
95+
96+
实例2:每小时的第3和第15分钟执行
97+
3,15 \* \* \* \* myCommand
98+
99+
实例3:在上午8点到11点的第3和第15分钟执行
100+
3,15 8-11 \* \* \* myCommand
101+
102+
实例4:每隔两天的上午8点到11点的第3和第15分钟执行
103+
3,15 8-11 \*/2 \* \* myCommand
104+
105+
实例5:每周一上午8点到11点的第3和第15分钟执行
106+
3,15 8-11 \* \* 1 myCommand
107+
108+
实例6:每晚的21:30重启smb
109+
30 21 \* \* \* /etc/init.d/smb restart
110+
111+
实例7:每月1、10、22日的4 : 45重启smb
112+
45 4 1,10,22 \* \* /etc/init.d/smb restart
113+
114+
实例8:每周六、周日的1 : 10重启smb
115+
10 1 \* \* 6,0 /etc/init.d/smb restart
116+
117+
实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
118+
0,30 18-23 \* \* \* /etc/init.d/smb restart
119+
120+
实例10:每星期六的晚上11 : 00 pm重启smb
121+
0 23 \* \* 6 /etc/init.d/smb restart
122+
123+
实例11:每一小时重启smb
124+
\* \*/1 \* \* \* /etc/init.d/smb restart
125+
126+
实例12:晚上11点到早上7点之间,每隔一小时重启smb
127+
0 23-7 \* \* \* /etc/init.d/smb restart

docs/linux/linux-install-nginx.md

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
---
2+
title: 在CentOS7下Nginx的简单使用
3+
date: 2018-07-10 23:05:10
4+
url: linux/install-nginx
5+
tags:
6+
- Nginx
7+
categories:
8+
- Linux
9+
---
10+
11+
<!-- ![Nginx Logo](https://cdn.jsdelivr.net/gh/niumoo/cdn-assets/2019/c4f4c4d1ee971b2faa3ee4d504837a18.jpg)-->
12+
![Nginx Logo](https://cdn.jsdelivr.net/gh/niumoo/cdn-assets/2019/060ce880b9ad8d2688139d38ce01b355.jpg)
13+
### Nginx
14+
Nginx是一个异步框架的 Web服务器,也可以用作反向代理,负载平衡器 和 HTTP缓存。该软件由 Igor Sysoev 创建,并于2004年首次公开发布。 同名公司成立于2011年,以提供支持。
15+
16+
安装
17+
```shell
18+
yum -y install nginx
19+
```
20+
启动
21+
```shell
22+
// 启动使用start 检查是否启动使用status 停止stop
23+
service nginx start
24+
```
25+
<!-- more -->
26+
测试
27+
输入IP地址进行访问,出现下图说明已经成功
28+
![nginx访问](https://cdn.jsdelivr.net/gh/niumoo/cdn-assets/2019/cd56f7d9e0b1df3d6bf1e9e668d09cf9.jpg)
29+
30+
### Nginx简单配置 - 发布web目录
31+
nginx 的配置文件位置在/etc/nginx/nginx.conf ,在修改之前建议进行备份!
32+
```shell
33+
// 备份配置文件
34+
cp nginx.conf nginx.conf.bak
35+
// 编辑Nginx配置文件
36+
vim /etc/nginx/nginx.conf
37+
// 在配置文件的http{}中添加如下配置
38+
server {
39+
# 端口号
40+
listen 80;
41+
# 域名
42+
server_name codingme.net;
43+
# web目录
44+
root /webroot;
45+
# 默认首页
46+
index index.html
47+
error_page 500 502 503 504 /50x.html;
48+
location / {
49+
}
50+
}
51+
```
52+
### Nginx简单配置 - 反向代理
53+
54+
什么是反向代理呢?服务器根据客户端的请求,从一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器簇的存在。
55+
一图胜千言:
56+
![反向代理](https://cdn.jsdelivr.net/gh/niumoo/cdn-assets/2019/ed853d7219f3414a1676b0e411e40018.png)
57+
使用反向代理有如下功能,引用维基百科:
58+
59+
> 对客户端隐藏服务器(簇)的IP地址
60+
> 安全:作为应用层防火墙,为网站提供对基于Web的攻击行为(例如DoS/DDoS)的防护,更容易排查恶意软件等
61+
> 为后端服务器(簇)统一提供加密和SSL加速(如SSL终端代理)
62+
> 负载均衡,若服务器簇中有负荷较高者,反向代理通过URL重写,根据连线请求从负荷较低者获取与所需相同的资源或备援
63+
> 对于静态内容及短时间内有大量访问请求的动态内容提供缓存服务
64+
> 对一些内容进行压缩,以节约带宽或为网络带宽不佳的网络提供服务
65+
> 减速上传
66+
> 为在私有网络下(如局域网)的服务器簇提供NAT穿透及外网发布服务
67+
> 提供HTTP访问认证[2]
68+
> 突破互联网封锁(不常用,因为反向代理与客户端之间的连线不一定是加密连线,非加密连线仍有遭内容审查进而遭封禁的风险;此外面对针对域名的关键字过滤、DNS缓存污染/投毒攻击乃至深度数据包检测也无能为力)
69+
70+
```shell
71+
// 编辑Nginx配置文件
72+
vim /etc/nginx/nginx.conf
73+
// 在配置文件的http{}中添加如下配置
74+
server {
75+
listen 80;
76+
server_name codingme.net;
77+
location / {
78+
# Tomcat访问路径
79+
proxy_pass http://127.0.0.1:8080/;
80+
}
81+
error_page 500 502 503 504 /50x.html;
82+
location = /50x.html {
83+
root html;
84+
}
85+
}
86+
```
87+
### Nginx简单配置 - HTTPS
88+
在Google对HTPPS的推动下,越来越多的网站开始启用HTTPS协议,以应对网络安全问题。
89+
90+
关于HTTPS的概念,推荐一篇文章:[HTTPS 的故事](https://qianduan.group/posts/5a6560b00cf6b624d2239c6f)
91+
92+
```shell
93+
// 编辑Nginx配置文件
94+
vim /etc/nginx/nginx.conf
95+
// 在配置文件的http{}中添加如下配置
96+
server {
97+
listen 80;
98+
server_name codingme.net;
99+
# HTTP请求跳转至HTTPS
100+
rewrite ^(.*) https://$host$1 permanent;
101+
}
102+
server {
103+
listen 443;
104+
server_name codingme.net;
105+
ssl on;
106+
# HTTPS证书位置
107+
ssl_certificate /webroot/xxx.crt;
108+
# 密钥位置
109+
ssl_certificate_key /webroot/xxx.key;
110+
ssl_session_timeout 5m;
111+
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
112+
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
113+
ssl_prefer_server_ciphers on;
114+
# 网站目录
115+
root /webroot;
116+
error_page 500 502 503 504 /50x.html;
117+
location / {
118+
119+
}
120+
}
121+
```

0 commit comments

Comments
 (0)