Linux设置定时任务

常用命令

1
2
3
4
## 编辑定时任务
crontab -e
## 显示定时任务
crontab -l

查看执行的日志

1
cat /var/log/cron

基本格式为

* * * * * commond
前面的五个星号分别表示 分 时 日 月 周,commond表示你要操作的命令

分(1-59)(/1表示每分钟)

时(1-23)(0表示0点)

日(1-31)

月(1-12)

周(1-6)(0表示周日)

字段 允许值 允许的特殊字符
0-59 - * /
0-59 - * /
小时 0-23 - * /
日期 1-31 - * ? / L W C
月份 1-12 或者 JAN-DEC - * /
星期 1-7 或者 SUN-SAT - * ? / L C #
年(可选) 留空 1970-2099 - * /

1.星号(*)表示取值范围内的所有值。例如,*在hour的位置,表示每小时执行一次。

2.连字符(-)表示一个范围。例如,8-12表示8、9、10、11、12。

3.逗号(,)表示分割指定的数值。例如:3,5-7,9表示3,5,6,7,9。

4.正斜杠(/)表示步进值。例如,分钟的位置为*/5,表示每五分钟执行一次

5.“?”只用于 日(Day of month) 和 星期(Day of week),表示不指定值,可以用于代替 *

6.“#”字符:表示该月第几个周X。6#3表示该月第3个周五

7.“L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X

8.“W”字符:指定离给定日期最近的工作日(周一到周五)

Spring Boot启动脚本

脚本内容

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=包名.jar

#使用说明,用来提示输入参数
usage() {
echo "Usage: sh wss.sh [start|stop|restart|status]"
exit 1
}

#检查程序是否在运行
is_exist(){
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}

#启动方法
start(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
nohup java -jar /root/project/websocket/$APP_NAME > /root/project/websocket/websocketserverlog.file 2>&1 &
echo "${APP_NAME} start success"
fi
}

#停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
else
echo "${APP_NAME} is not running"
fi
}

#输出运行状态
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}

#重启
restart(){
stop
start
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac

启动命令

1
sh wss.sh start

Spring Boot统一返回结果

实现统一返回非常简单,只需要三个功能

1
ResponseData<T> ResponseDataUtils ResultEnum

1、ResponseData

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
53
54
55
56
57
58
59
public class ResponseData<T> implements Serializable {

private String code;

private String msg;

private T data;


public ResponseData(String code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}

public ResponseData(String code, String msg) {
this.code = code;
this.msg = msg;
}

public ResponseData(ResultEnums resultEnums) {
this.code = resultEnums.getCode();
this.msg = resultEnums.getMsg();
}

public ResponseData(ResultEnums resultEnums, T data) {
this.code = resultEnums.getCode();
this.msg = resultEnums.getMsg();
this.data = data;
}

public ResponseData() {
}

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

public T getData() {
return data;
}

public void setData(T data) {
this.data = data;
}
}

2、ResponseDataUtils

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
53
54
55
56
public class ResponseDataUtil {
/**
* 带实体的统一返回
*
* @param data 实体
* @param <T> 实体类型
* @return
*/
public static <T> ResponseData buildSuccess(T data) {
return new ResponseData<T>(ResultEnums.SUCCESS, data);
}

public static ResponseData buildSuccess() {
return new ResponseData(ResultEnums.SUCCESS);
}

public static ResponseData buildSuccess(String msg) {
return new ResponseData(ResultEnums.SUCCESS.getCode(), msg);
}

public static ResponseData buildSuccess(String code, String msg) {
return new ResponseData(code, msg);
}

public static <T> ResponseData buildSuccess(String code, String msg, T data) {
return new ResponseData<T>(code, msg, data);
}

public static ResponseData buildSuccess(ResultEnums resultEnums) {
return new ResponseData(resultEnums);
}

public static <T> ResponseData buildError(T data) {
return new ResponseData<T>(ResultEnums.ERROR, data);
}

public static ResponseData buildError() {
return new ResponseData(ResultEnums.ERROR);
}

public static ResponseData buildError(String msg) {
return new ResponseData(ResultEnums.ERROR.getCode(), msg);
}

public static ResponseData buildError(String code, String msg) {
return new ResponseData(code, msg);
}

public static <T> ResponseData buildError(String code, String msg, T data) {
return new ResponseData<T>(code, msg, data);
}

public static ResponseData buildError(ResultEnums resultEnums) {
return new ResponseData(resultEnums);
}
}

3、ResultEnum

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
public enum ResultEnums {

SUCCESS("0000", "请求成功"),
ERROR("1111", "请求失败"),
SYSTEM_ERROR("1000", "系统异常"),
BUSSINESS_ERROR("2001", "业务逻辑错误"),
VERIFY_CODE_ERROR("2002", "业务参数错误"),
PARAM_ERROR("2002", "业务参数错误");

private String code;
private String msg;

ResultEnums(String code, String msg) {
this.code = code;
this.msg = msg;
}

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}
}

CentOS7添加新用户并授权

1、添加新用户

(1)创建新用户

1
adduser [用户名]

(2)修改新用户的密码

1
passwd [用户名]

2、授权

(1)添加sudoers文件可写权限

1
chmod -v u+w /etc/sudoers

(2)修改sudoers文件

1
vim /etc/sudoers

在sudoers文件中找到如下位置并添加如下内容:

1
[用户名]    ALL=(ALL)    ALL(如需新用户使用sudo时不用输密码,把最后一个ALL改为NOPASSWD:ALL即可)

(3)收回sudoers文件可写权限

1
chmod -v u-w /etc/sudoers

CentOS7更换yum源

一、备份当前源

1
2
cd /etc/yum.repos.d/
cp CentOS-Base.repo CentOS-Base-repo.bak

二、使用wget下载阿里yum源repo文件

1
wget http://mirrors.aliyun.com/repo/Centos-7.repo

三、清理旧包

1
yum clean all

四、把下载下来阿里云repo文件设置成为默认源

1
mv Centos-7.repo CentOS-Base.repo

五、生成阿里云yum源缓存并更新yum源

1
2
yum makecache
yum update

Tomcat修改日志输出路径

修改catalina.sh文件

进入tomcat/bin/路径下,找到catalina.sh文件,下载本地打开搜索CATALINA_OUT=,在后面修改为你想要输出的路径,设置输出路径为/home/user/logs文件夹下,路径后面跟上catalina.out文件名

修改server.xml文件

进入tomcat/conf/路径下,找到server.xml文件,下载本地打开搜索directory=,将这里修改为你指定的输出路径,注意这里写到文件夹即可,最后不需要/

修改server.xml文件

进入tomcat/conf/路径下,找到logging.properties文件,下载本地打开,将图中所示的四处都改为你要输出的路径,同样也是写到文件夹即可,不需要加/

三个文件都覆盖后,重启tomcat