后端基础服务搭建与常见运维指令

1、gitlab搭建与配置

点击查看代码

复制代码
- 步骤1:安装依赖
yum install curl policycoreutils policycoreutils-python openssh-server openssh-clients -y

-  步骤2:安装gitllab
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.0.0-ce.0.el7.x86_64.rpm
rpm  -ivh gitlab-ce-11.0.0-ce.0.el7.x86_64.rpm 

- 步骤3:从老机器备份
gitlab-rake gitlab:backup:create
(备份完成后备份文件会出现在/var/opt/gitlab/backups/)

- 步骤4:恢复到新机器(注意:gitlab版本要一致,否则无法恢复)
	停止相关服务:
	 gitlab-ctl stop unicorn
	 gitlab-ctl stop sidekiq
	恢复: gitlab-rake gitlab:backup:restore BACKUP=1537261122_2018_09_18_9.2.5
	启动:  gitlab-ctl start

2、mysql搭建与配置

点击查看代码

复制代码
centos 安装mysql 设置密码
1、安装
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
    sudo yum install -y mysql-community-server

启动mysql服务:sudo service mysqld start / sudo systemctl start mysqld.service 

2、查看有没有初始化密码
grep "password" /var/log/mysqld.log

3、重启mysql服务
service mysql restart

4、mysql -u root -p
//注意:修改密码时 默认的规则是:最少1个大写 最少一个特殊字符 最少一个数字
alter user 'root'@'localhost' identified by 'kunyashaw';
flush privileges

5、外网访问
create user 'root'@'%' identified by '123';
grant all privileges on *.* to 'root'@'localhost' identified by '123';
grant all privileges on *.* to 'root'@'%' identifed by '123';
flush privileges;


我们知道我们的最高权限管理者是root用户,它拥有着最高的权限操作。包括select、update、delete、update、grant等操作。那么一般情况在公司之后DBA工程师会创建一个用户和密码,让你去连接数据库的操作,并给当前的用户设置某个操作的权限(或者所有权限)。那么这时就需要我们来简单了解一下:

如何创建用户和密码
给当前的用户授权
移除当前用户的权限
如果你想创建一个新的用户,则需要以下操作:

进入到mysql数据库下

mysql> use mysql
Database changed
对新用户增删改

1.创建用户:
# 指定ip:192.118.1.1的mjj用户登录
create user 'alex'@'192.118.1.1' identified by '123';
# 指定ip:192.118.1.开头的mjj用户登录
create user 'alex'@'192.118.1.%' identified by '123';
# 指定任何ip的mjj用户登录
create user 'alex'@'%' identified by '123';

2.删除用户
drop user '用户名'@'IP地址';


3.修改用户
rename user '用户名'@'IP地址' to '新用户名'@'IP地址';

4.修改密码
set password for '用户名'@'IP地址'=Password('新密码');
对当前的用户授权管理

#查看权限
show grants for '用户'@'IP地址'

#授权 mjj用户仅对db1.t1文件有查询、插入和更新的操作
grant select ,insert,update on db1.t1 to "alex"@'%';

# 表示有所有的权限,除了grant这个命令,这个命令是root才有的。mjj用户对db1下的t1文件有任意操作
grant all privileges  on db1.t1 to "alex"@'%';
#mjj用户对db1数据库中的文件执行任何操作
grant all privileges  on db1.* to "alex"@'%';
#mjj用户对所有数据库中文件有任何操作
grant all privileges  on *.*  to "alex"@'%';

#取消权限

# 取消mjj用户对db1的t1文件的任意操作
revoke all on db1.t1 from 'alex'@"%";  

# 取消来自远程服务器的mjj用户对数据库db1的所有表的所有权限

revoke all on db1.* from 'alex'@"%";  

取消来自远程服务器的mjj用户所有数据库的所有的表的权限
revoke all privileges on *.* from 'alex'@'%';
MySql备份命令行操作

# 备份:数据表结构+数据
mysqdump -u root db1 > db1.sql -p


# 备份:数据表结构
mysqdump -u root -d db1 > db1.sql -p

#导入现有的数据到某个数据库
#1.先创建一个新的数据库
create database db10;
# 2.将已有的数据库文件导入到db10数据库中
mysqdump -u root -d db10 < db1.sql -p



centos mysql5.7 忘记数据库密码怎么办?
0、vi /etc/my.conf
在mysqld中加入一行:skip-grant-tables
1、mysql -uroot -p
2、输入你的centos的密码
3、UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPassword') WHERE User = 'root' AND Host = 'localhost';
注:如果显示 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements,说明你的密码不符合安全要求,
4、FLUSH PRIVILEGES;
5、quit;


mysql忘记密码怎么办??
以windows为例: 
1.进入mysql安装目录,打开my.ini文件

2.找到[mysqld]配置行(注意,不是[mysql]),在其下一行输入:skip-grant-tables(或者:--skip-grant-tables,两者区别是有时两个横线会导致服务无法重启需要测试应当添加否。)

3.cmd命令:services.msc,找到mysql服务并重启(使修改的配置文件生效)

4.mysql命令行:use mysql(进入系统配置库)

5.mysql命令行:update user set password=password("123") where user="root";(别忘了最后加分号,分号意味着命令的结束) 

6.mysql命令行:flush privileges;(刷新缓存,更新数据库读取的密码别忘了最后加分号,分号意味着命令的结束)

7.退出mysql,或重启服务,密码设置成功。



mac 安装使用mysql-shell:
1、下载 https://dev.mysql.com/downloads/shell/
2、安装
3、使用
mysqlsh  root@124.17.5.84
获取帮助: \help
执行sql语句: \sql show databases;

3、postgresql搭建与配置

点击查看代码

复制代码
 curl -O https://ftp.postgresql.org/pub/source/v13.2/postgresql-13.2.tar.gz
tar zxvf postgresql-13.2.tar.gz 
./configure --prefix=/usr/local/postgresql
(如果提示readline找不到 yum install readline-devel)
(如果提示zlib找不到 yum install zlib-devel)

make && make install

linux:
useradd postgres
chown -R postgres:postgres /usr/local/postgresql/
su postgress

vi ~/.bash_profile
    PGHOME=/usr/local/postgresql
    export PGHOME
    PGDATA=/usr/local/postgresql/data
    export PGDATA

    PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin

source ~/.bash_profile

数据库初始化:
initdb

配置数据库服务器的host等信息:(在initdb后会创建一下文件夹:/usr/local/postgresql/data)
 vi pg_hba.conf 
host all all 0.0.0.0/0
 vi postgresql.conf
listen_address = '*'



启动数据库服务器:
pg_ctl start -l /usr/local/postgresql/log/pg_server.log

本地连接数据库:
psql

设置密码:
psql进入命令行
\password 
暂定:ciic

创建用户名密码:
create user wikijs with password 'ciic';

创建数据库:
create database wiki owner wikijs;

数据库权限赋值给某个人:
grant all on database wiki to wikijs;

进入数据库命令行模式:
psql
退出数据库命令行模式:
\q



数据库基本操作:
创建 create database wiki owner wikijs;
切换到某个数据库:\c dbname;
查看 \l
修改
删除 drop database  dbname

表的基本操作:
创建:CREATE TABLE DEPARTMENT(ID INT PRIMARY KEY NOT NULL,DEPT CHAR(50) NOT NULL);
 create table ([字段名1] [类型1] <references 关联表名(关联的字段名)>;,[字段名2] [类型2],......<,primary key (字段名m,字段名n,...)>;);
查看:\d  ; \d table1;
重命名一个表: alter table [表名A] rename to [表名B];
删除一个表: drop table [表名]; 

表内操作:
在已有的表里添加字段: alter table [表名] add column [字段名] [类型];
删除表中的字段: alter table [表名] drop column [字段名];
重命名一个字段: alter table [表名] rename column [字段名A] to [字段名B];
给一个字段设置缺省值: alter table [表名] alter column [字段名] set default [新的默认值];
去除缺省值: alter table [表名] alter column [字段名] drop default;
在表中插入数据: insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......);
修改表中的某行某列的数据: update [表名] set [目标字段名]=[目标值] where [该行特征];
删除表中某行数据: delete from [表名] where [该行特征];
delete from [表名];--删空整个表 


数据库用户:
创建: create user ** with password '***';
授权:grant all on database wiki to wikijs;
删除:


json存储与查询:

create table if not exists teacher(info jsonb);
insert into teacher values('{"id":1,"name":"zzl","age":24}');

select info from teacher where info @> '{"id":1}'::jsonb;
(查询符:)



postgresql:

# 创建新表
CREATE TABLE user_tbl(name VARCHAR(20), signup_date DATE);

# 插入数据
INSERT INTO user_tbl(name, signup_date) VALUES('张三', '2013-12-22');

# 选择记录
SELECT * FROM user_tbl;

# 更新数据
UPDATE user_tbl set name = '李四' WHERE name = '张三';

# 删除记录
DELETE FROM user_tbl WHERE name = '李四' ;

# 添加栏位
ALTER TABLE user_tbl ADD email VARCHAR(40);

# 更新结构
ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL;

# 更名栏位
ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup;

# 删除栏位
ALTER TABLE user_tbl DROP COLUMN email;

# 表格更名
ALTER TABLE user_tbl RENAME TO backup_tbl;

# 删除表格
DROP TABLE IF EXISTS backup_tbl;

4、php搭建与配置

点击查看代码

复制代码
php安装:
yum install epel-release yum-utils -y
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php74
yum update php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysql -y    
php -v

php卸载:
rpm -e --nodeps rpm -qa | grep php

安装php-xml扩展:
yum --enablerepo=remi-php74 install php-xml
yum --enablerepo=remi-php74 install php-mbstring

5、docker搭建与配置

点击查看代码

复制代码
docker 开启2375端口,提供外部访问docker
Posted on 2020-01-02 16:56  panchanggui  阅读(1261)  评论(0)  编辑  收藏
 

一、编辑docker文件:/usr/lib/systemd/system/docker.service

命令:vim /usr/lib/systemd/system/docker.service

修改ExecStart行,增加内容 -H tcp://0.0.0.0:2375 ,修改后如下:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock



 
二、重新加载docker配置

systemctl daemon-reload // 1,加载docker守护线程
systemctl restart docker // 2,重启docker


三、docker
docker ps -a 查看所有的容器状态
docker start/stop/restart 容器名称/容器id
docker exec -it mysql bash //进入mysql这个容器的bash

查看某容器在主机上的存储地址:
步骤1:通过docker inspect 容器名称/容器id 
docker inspect  mysql | grep UpperDir
步骤2:进入UpperDir对应的目录中 操作容器

6、防火墙开关

点击查看代码

复制代码
centos7 防火墙关闭
systemctl status firewalld  //查看状态
systemctl stop firewalld   //停止
systemctl disable firewalld //禁用

7、根目录结构介绍

点击查看代码

复制代码
bin :存放普通用户可执行的指令,即使在单用户模式下也能够执行处理
boot :开机引导目录,包括Linux内核文件与开机所需要的文件
dev :设备目录,所有的硬件设备及周边均放置在这个设备目录中
etc:各种配置文件目录,大部分配置属性均存放在这里
home:这里主要存放你的个人数据,具体每个用户的设置文件,用户的桌面文件夹,还有用户的数据都放在这里。每个用户都有自己的用户目录,位置为:/home/用户名。当然,root用户除外。
lib:开机时常用的动态链接库,bin及sbin指令也会调用对应的lib库
lib64:开机时常用的动态链接库64位,bin及sbin指令也会调用对应的lib库
lost+found:是一个特殊目录,用途是用来存放文件系统错误导致文件丢失后找回数据的;如果你不小心删除了lost+found目录,不用使用mkdir命令创建lost+found目录,应该使用 mklost+found命令创建lost+found目录。
media:可移除设备挂载目录,类似软盘 U盘 光盘等临时挂放目录
mnt:用户临时挂载其他的文件系统,额外的设备可挂载在这里,相对临时而言
opt:第三方软件安装目录,现在习惯性的放置在/usr/local中
proc:虚拟文件系统,通常是内存中的映射,特别注意在误删除数据文件后,比如DB,只要系 统不重启,还是有很大几率能将数据找回来
root:系统管理员主目录,除root之外,其他用户均放置在/home目录下
run:系统运行是所需文件,以前防止在/var/run中,后来拆分成独立的/run目录。重启后重新生成对应的目录数据
sbin:只有root才能运行的管理指令,跟bin类似,但只属于root管理员
srv:服务启动后需要访问的数据目录,
sys:跟proc一样虚拟文件系统,记录核心系统硬件信息
tmp:存放临时文件目录,所有用户对该目录均可读写
usr:应用程序放置目录,
var :存放系统执行过程经常改变的文件,
vmlinuz : 是可引导的,压缩的linux内核,"vm"代表的"virtual memory",一般是一个软连接.
还有一个重要的目录就是:/var/log/目录,主要存放的是系统日志文件:

/var/log/message :系统启动后的信息和错误日志,是Linux中最常用的日志之一
/var/log/secure :与安全相关的日志信息
/var/log/maillog :与邮件相关的日志信息
/var/log/cron :与定时任务相关的日志信息
/var/log/spooler :与UUCP和news设备相关的日志信息
/var/log/boot.log :守护进程启动和停止相关的日志消息


其他目录的用途后面会持续更新

8、后台任务处理

点击查看代码

复制代码
jobs 查看再后台运行的命令
fg %jobnumber 将选中的命令调出
ctrl+z 放在后台 并处于暂停状态
bg 将后台暂停的命令 变成后台继续执行

nohup 程序后台执行 并且关闭当前终端也执行 其他终端通过jobs无法查看后台运行的程序 

9、磁盘分析

点击查看代码

复制代码
二、通过终端命令查看U盘目录。
1、查看所有磁盘信息,即可以查看到我们的u盘的状态 (主要看分区还有文件系统)输入指令 sudo fdisk -l
2、挂载U盘
假如我们的优盘是fat32格式的
输入指令:mount -t vfat /dev/sdb1 /media
如果是NTFS格式的话
输入指令:mount -t nfs /dev/sdb1 /media
这样就把u盘挂载到media目录了(注意/dev/sdb1 是指u盘的分区 ,你的可能不同)
最后我们只要使用命令:cd /media 再 ls 就ok 了
(注意以上操作需要root权限)
3、卸载u盘
只需要执行:sudo umount /media/

磁盘分析神器:
wget http://dev.yorhel.nl/download/ncdu-1.11.tar.gz
tar -zxf ncdu-1.11.tar.gz
yum install glibc 
yum install ncurses ncurses-devel
./configure  && make && make install
ncdu -x -q

10、虚拟ip

点击查看代码

复制代码
Linux建立虚拟ip的方法
1、虚拟ip的介绍

虚拟IP地址(VIP) 是一个不与特定计算机或一个计算机中的网络接口卡(NIC)相连的IP地址。数据包被发送到这个VIP地址,但是所有的数据还是经过真实的网络接口。

上边是百度的定义。

就是一块网卡上边有两个ip,然后无论到哪个ip的流量都会经过物理网卡。

 

2、虚拟ip的作用

大部分虚拟ip基本上都用于高可用的架构上边。主机启用虚拟ip,所有访问的请求都会到主机。当主机宕机的时候,高可用软件会将主机的虚拟ip down掉,然后在备机上启用虚拟ip。这样就完成了主备切换。从而保证业务的可用性。

 

3、linux中创建虚拟ip的方法

在linux中创建虚拟ip有两种方法,分别是:别名IP和辅助IP。

(1)别名ip

别名ip是通过ifconfig命令去创建和操作的虚拟ip。

<1>创建虚拟ip

使用ifconfig命令查看

 

使用命令创建

ifconfig eth0:1 192.168.8.5 netmask 255.255.255.0 up

 

上边可以看到生成了eth0:1然后ip是192.168.8.5的虚拟网卡。

<2>删除别名ip

ifconfig eth0:1 192.168.8.5 netmask 255.255.255.0 down

很简单只要将后边的up改为down就可以了。

 

<3>开机生成虚拟ip

想要开机就有虚拟ip,可以在网卡的配置目录中去建立一个新的网卡的配置文件

centos和红帽都是在这个目录下/etc/sysconfig/network-scripts

cp ifcfg-eth0 ifcfg-eth0:1

然后更改其中的ip即可,重启网卡就行。

(2)辅助ip

辅助ip是由linux的ip命令去创建和操作的。

<1>创建辅助ip

ip addr add 192.168.8.5/24 dev eth0

<2>查看辅助ip

使用命令ip a就可以查看,但是不能使用ifconfig --a去查看。

 

<3>删除辅助ip

ip addr del 192.168.8.5/24 dev eth0

也很简单,将add改为del即可。

<4>永久生效

这种方式创建的虚拟ip,可以将生成虚拟ip的命令写到/etc/rc.local中去。

开机即可自动加载。在配置redis-sentinel的时候可能会使用到

11、查找find和grep

点击查看代码

复制代码
 find / -type f -name 'vars.example' 查找名字为vars.example的文件
 find / -type f -size +100M 查找大于100M的文件
find 文件目录  -type f |xargs grep "查询内容";  查找包含指定内容的文件
du -h --max-depth=1 / | grep '[0-9]G\>' 查找1g以上的文件


grep   查找的内容   文件路径
grep movie demo.txt
grep that ~/*.txt

选项
    --color=auto   将颜色高亮显示
        给 grep 指令起一个别名   vi ~/.bashrc
        添加一行     alias grep='grep --color=auto'
        让配置文件立即生效       source ~/.bashrc
    -c         得到内容的个数
    -i         不区分大小写的查找
    -n         显示在文档中的行号
    -r         递归查找,但是不能限制后缀,只能遍历所有
        grep -r that ~/*
    -l         只显示文件名,不显示内容
    grep -l 你好 ~/test/*.txt


正则表达式进行查找(少用)
    \w(数字字母下划线)   
    \W(除了上面)
    \d(数字)
    \D(非数字)
    .(除了换行符)
    *(任意多个)
    +(至少1个)
    ?(0个或者1个)
    te-st@163.com   abc_def@qq.com   lala@sina.cn   benben@meme.net

    grep -E .*? demo.txt 

    -E   使用正则表达式来进行匹配
	
	
	find    可以找到你想要的文件
格式:  find [目录] [选项] [选项值]
目录:去哪找,可以不写,默认代表当前目录
选项:怎么找
    >> -name   按照名字找
        可以使用通配符
    -size   按照大小找
        单位为  kmg   10k(等于10k)   +10k(大于10k)   -10k(小于10k)
    -user   按照用户名
    -group  按照组名
    -maxdepth  -mindepth   限制查找的目录层级,默认递归查找所有
    -ctime  按照创建时间查找
        单位是天
选项值:找什么
    find / -name demo.txt
    find / -name \*.txt
    find / -size +10k
    find / -user demo.txt
    find / -group demo.txt
    find / -mindepth 4 -name \*.txt
    find / -mindepth 3 -maxdepth 5 -name \*.txt

12、开机启动

点击查看代码

复制代码
添加开机启动:
1、创建一个带有可执行权限的脚本 比如/root/1.sh
2、给/etc/rc.d/rc.local添加执行权限
3、修改/etc/rc.d/rc.local,尾部追加 /root/1.sh
这样开机的话 就会启动/root/1.sh

systemctl\service\chckconfig 关系与区别

Systemctl和service、chkconfig命令的关系
systemctl命令:是一个systemd工具,主要负责控制systemd系统和服务管理器。
service命令:可以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。
chkconfig命令:是管理系统服务(service)的命令行工具。所谓系统服务(service),就是随系统启动而启动,随系统关闭而关闭的程序。
systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。
systemctl是RHEL 7 的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。可以使用它永久性或只在当前会话中启用/禁用服务。
所以systemctl命令是service命令和chkconfig命令的集合和代替。

一、service命令
service命令其实是去/etc/init.d目录下,去执行相关程序
# service命令启动redis脚本
service redis start
# 直接启动redis脚本
/etc/init.d/redis start
# 开机自启动
update-rc.d redis defaults
其中脚本需要我们自己编写


二、systemctl命令
systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。
systemd对应的进程管理命令是systemctl

1)systemctl命令兼容了service
即systemctl也会去/etc/init.d目录下,查看,执行相关程序
2) 使用
systemctl redis start
systemctl redis stop
# 开机自启动
systemctl enable redis

systemctl 管理服务的启动、重启、停止、重载、查看状态等常用命令区分
System V init 命令(RHEL 6)	systemctl 命令(RHEL 7)	作用
service foo start	systemctl start foo.service	启动服务
service foo restart	systemctl restart foo.service	重启服务
service foo stop	systemctl stop foo.service	停止服务
service foo reload	systemctl reload foo.service	重新加载配置文件(不终止服务)
service foo status	systemctl status foo.service	查看服务状态


将命令添加为service并设置开机启动:
vi /etc/systemd/system/redis.service

[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl start redis.service
systemctl enable redis.service

服务操作命令

systemctl start redis.service   #启动redis服务
systemctl stop redis.service   #停止redis服务
systemctl restart redis.service   #重新启动服务
systemctl status redis.service   #查看服务当前状态
systemctl enable redis.service   #设置开机自启动
systemctl disable redis.service   #停止开机自启动

13、网络定位和追踪

点击查看代码

复制代码
1. traceroute的作用
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。
当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走
的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。
linux系统中,我们称之为traceroute。

traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。
一条路径上的每个设备traceroute要测3次。
输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。

2. traceroute的执行
大多数情况下,我们会在linux主机系统下,直接执行命令行:traceroute hostname

-d 使用Socket层级的排错功能。

-f 设置第一个检测数据包的存活数值TTL的大小。

-F 设置勿离断位。

-g 设置来源路由网关,最多可设置8个。

-i 使用指定的网络界面送出数据包。

-I 使用ICMP回应取代UDP资料信息。

-m 设置检测数据包的最大存活数值TTL的大小。

-n 直接使用IP地址而非主机名称。

-p 设置UDP传输协议的通信端口。

-r 忽略普通的Routing Table,直接将数据包送到远端主机上。

-s 设置本地主机送出数据包的IP地址。

-t 设置检测数据包的TOS数值。

-v 详细显示指令的执行过程。

-w 设置等待远端主机回报的时间。

-x 开启或关闭数据包的正确性检验。

14、内网免密登录

点击查看代码

复制代码
免密登录:
    步骤1:主机生成公共签名文件
    默认存在这个目录:(/root/.ssh/id_rsa)
    ssh-keygen -t rsa

    步骤2:将公共签名文件发给从机某个目录,比如root目录下
     scp /root/.ssh/id_rsa.pub root@101.200.122.999:/root/id_rsa.pub

    步骤3:从机处理下签名文件
     追加到信任主机列表:cat /root/id_rsa.pub >>   /root/.ssh/authorized_keys
     修改权限:chmod 600 /root/.ssh/authorized_keys 

    步骤4:验证
    ssh root@101.200.122.999 
    如果不需要密码可以登录就是成功的

15、定时任务

点击查看代码

复制代码
# 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

前四行是用来配置crond任务运行的环境变量
第一行SHELL变量指定了系统要使用哪个shell,这里是bash
第二行PATH变量指定了系统执行命令的路径
第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户
如果MAILTO变量的值为空,则表示不发送任务执行信息给用户
第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。
星号(*):代表所有可能的值,如month字段为星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,"1,2,5,7,8,9"
中杠(-):可以用整数之间的中杠表示一个整数范围,例如"2-6"表示"2,3,4,5,6"
正斜线(/):可以用正斜线指定时间的间隔频率,例如"0-23/2"表示每两小时执行一次。

设置定时任务:
 ①创建定时脚本
  vi /home/wwwroot/public/timertask.sh
 
  /usr/bin/php /homw/wwwroot/public/code/getNewsToDatabase.php

②指定定时任务
  crontab -e // 进入到编辑用户的定时任务界面
  */2 * * * * /bin/sh /homw/wwwroot/public/timertash.sh
③查看当前用户的定时任务
  crontab -l
④查看定时任务执行的日志信息
 cat /var/log/cron

 0 */1 * * * /usr/sbin/ntpdate asia.pool.ntp.org 每隔1小时执行
 * */1 * * * /usr/sbin/ntpdate asia.pool.ntp.org 每1分钟执行
 0 0 * * * /usr/bin/python3 /root/web_spider/news/configs/every_day_NumerId.py 每天0时0分执行