Linux系统管理—linux计划任务和日志的管理

Linux系统管理—linux计划任务和日志的管理一、计划任务-at-cron-计划任务使用方法计划任务的作用:是做一些周期性的任务,在生产中的主要用来定期备份数据CROND:这个守护进程是为了周期性执行任务或处理等待事件而存在计划任务的安排方式分两种:一种是定时性的,也就是例行。就是每隔一定的周期就要重复来做这个事情一种是突发性的,就是这次做完了这个事,就没有下一次了,临时决定,只执行一次的任务at和crontab这两个命令:at:它是一个可以处理仅执行一次就结束的指令crontab:它是会把你指定的工

大家好,又见面了,我是你们的朋友全栈君。

目录

一、计划任务-at-cron-计划任务使用方法

1.at 计划任务的使用

1)查看atd服务是否开启

2)at 创建计划任务

3)查看定时任务内容

4)删除 at 计划任务

2.crontab 定时任务的使用

1)启动 crond 服务

2)cron 命令参数介绍:

3)cron -e 编辑时的语法

4)创建计划任务

5)排查所有用户的计划任务

6)查看系统级别的计划任务

7)使用 crontab 命令的注意事项:

8)常见的计划任务写法和案例

3.at 和 cron 黑白名单问题:

二、日志的种类和记录的方式-自定义 ssh 服务日志类型和存储位置

1、常见日志文件的作用

2.应用

1)查看哪个 IP 地址经常暴力激活成功教程系统用户密码

2)查询登录次数

3)使用 /var/log/btmp 文件查看暴力激活成功教程系统的用户

4)防火墙禁ip

5)清空日志:

6)如何防止日志删除

三.日志的规则

1、日志的记录方式 分类 级别

1)日志的分类:

2)日志的级别

3)类别.级别举例

四、rsyslog 日志服务

五、日志的配置文件信息:

1)日志输入的规则

2)定义自己的日志方法

六.日志的切割

1)logrotate 配置文件主要有:

2)编辑配置文件

3)logrotate 命令:

七、搭建远程日志收集服务器-日志切割

服务器端:

 1.开启端口TCP/UDP

 2.重启rsyslog

 3.查看端口是否打开

 4.关闭防火墙及保护机制

客户端

1.自定义日志并且定义日志保存位置

2.重启rsyslog 

3.关闭防火墙及保护机制


一、计划任务-at-cron-计划任务使用方法

计划任务的作用:是做一些周期性的任务,在生产中的主要用来定期备份数据

CROND:这个守护进程是为了周期性执行任务或处理等待事件而存在

计划任务的安排方式分两种:

一种是定时性的,也就是例行。就是每隔一定的周期就要重复来做这个事情

一种是突发性的,就是这次做完了这个事,就没有下一次了,临时决定,只执行一次的任务

at 和 crontab 这两个命令:

at:它是一个可以处理仅执行一次就结束的指令

crontab:它是会把你指定的工作或任务,比如:脚本等,按照你设定的周期一直循环执行下去

1.at 计划任务的使用

语法格式: at 时间 ;服务:atd

1)查看atd服务是否开启

【】# systemctl start atd

【】# systemctl status atd

#查看是否开启服务

【】#systemctl  display  atd

   #关闭服务

 【】systemctl  enable  atd

   #开启服务

【】# systemctl is-enabled atd

   #设为开机自启

在 Centos6 查看开机启动服务:

【】# chkconfig –list | grep atd

实战-使用

2)at 创建计划任务

[root@localhost ~]# date

2018 年 05 月 21 日 星期一 20:43:29 CST

[root@localhost ~]# at 20:46

at> mkdir /tmp/localhost

at> touch /tmp/localhost/a.txt

at> <EOT>

ctrl <– 只能删除当前行

ctrl  d 完成退出

【】# at -l

【】# atq

#查看定时任务  会提供序号

检查 at 计划任务运行结果:

【】# ls /tmp/localhost/

a.txt 1.2 查看和删除 at 将要执行的计划任务

【】# at -l

5  Sat Aug 19 20:50:00 2017 a root

任务编号

执行的时间

队列

执行者

5

Fri Oct 28 20:55:00 2016

a

root

【】# at -c 5

3)查看定时任务内容

【】# ls /var/spool/at/

a00003018452cb a0000501845084 spool

【】# tail -5 /var/spool/at/a0000501845084

at 计划任务的特殊写法

【】# at 20:00 2018-10-1 在某天

【】# at now +10min 在 10 分钟后执行

【】# at 17:00 tomorrow 明天下午 5 点执行

【】# at 6:00 pm +3 days 在 3 天以后的下午 6 点执行

【】# at 23:00 < a.txt

4)删除 at 计划任务

语法: atrm 任务编号

【】# at -l

3   Tue May 22 08:43:00 2018 a root

5   Mon May 21 23:00:00 2018 a root

【】# atrm 5

【】# at -l

3   Tue May 22 08:43:00 2018 a root

也可删除 /var/spool/at/a000xxx 

2.crontab 定时任务的使用

crond 命令定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作

cron 是一个 linux 下的定时执行工具,可以在无需人工干预的情况下运行作业。

1)启动 crond 服务

【】# systemctl start crond

【】# systemctl enable crond

2)cron 命令参数介绍:

crontab 的选项:

crontab -u  hr  #指定 hr 用户的 cron 服务

crontab -l   #列出当前用户下的 cron 服务的详细内容

crontab -u user1 -l   #列出指定用户 mk 下的 cron 服务的详细内容

crontab -r   #删除 cron 服务

crontab -e   #编辑 cron 服务

例如:

crontab -u root -l

#root 查看自己的 cron 计划任务

crontab -u san -r

#root 想删除 san 的 cron 计划任务

3)cron -e 编辑时的语法

Linux系统管理---linux计划任务和日志的管理

星期日用 0 或 7 表示

一行对应一个任务,特殊符号的含义:

*

代表取值范围内的数字

(任意/每)

/

指定时间的间隔频率

*/10 0-23/2

代表从某个数字到某个数字

8-17

分开几个离散的数字

6,10——13,20

4)创建计划任务

例 1:每天凌晨 2 点 1 分开始备份数据

[root@localhost spool]# crontab -e #添加计划任务

1 2 * * * tar zcvf /opt/grub2.tar.gz /boot/grub2

[root@localhost ~]# crontab -l #查看

例 2:以非 root 用户添加计划任务。 最好使用已经存在系统用户添加。这里使用 bin 用户来添加

[root@localhost ~]# crontab -u bin -e

*/1 * * * * echo “aaaaaaa” >> /tmp/bin.txt

排查:

[root@localhost ~]# crontab -u bin -l

*/1 * * * * echo “aaaaaaa” >> /tmp/bin.txt

如何

5)排查所有用户的计划任务

注:所有用户的计划任务,都会在/var/spool/cron/下产生对应的文件

[root@localhost ~]# ll /var/spool/cron/

total 8

-rw——- 1 root root 42 Nov 12 10:11 bin

-rw——- 1 root root 19 Nov 12 10:06 root

1.6 系统级别的计划任务

6)查看系统级别的计划任务

[root@localhost etc]# ll /etc/crontab

-rw-r–r–. 1 root root 451 Dec 28 2013 /etc/crontab

[root@localhost etc]# vim /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

# 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

也可以直接在/etc/crontab 中添加计划任务

7)使用 crontab 命令的注意事项:

环境变量的问题

[root@localhost bin]# ls /etc/cron

cron.d/ cron.deny cron.monthly/ cron.weekly/

cron.daily/ cron.hourly/ crontab

注: cron.d/   #是系统自动定期需要做的任务,但是又不是按小时,按天,按星期,按月来执行的,

那么就放在这个目录下面。

cron.deny        #控制用户是否能做计划任务的文件;

cron.monthly/    #每月执行的脚本;

cron.weekly/     #每周执行的脚本;

cron.daily/      #每天执行的脚本;

cron.hourly/     #每小时执行的脚本;

crontab    #主配置文件 也可添加任务;

实战-

8)常见的计划任务写法和案例

常见写法:

每天晚上 21:00 重启 apache

0 21 * * * /etc/init.d/httpd restart

每月 1、10、22 日的 4 : 45 重启 apache。

45 4 1,10,22 * * /etc/init.d/httpd restart

每月 1 到 10 日的 4 : 45 重启 apache。

45 4 1-10 * * /etc/init.d/httpd restart

每隔两天的上午 8 点到 11 点的第 3 和第 15 分钟执行 apach

3,15 8-11 */2 * * /etc/init.d/httpd restart

晚上 11 点到早上 7 点之间,每隔一小时重启 apach

0 23-7/1 * * * /etc/init.d/apach restart

周一到周五每天晚上 21:15 寄一封信给 root@panda:

不常见写法:

0 0 1,15 * 1 命令

3.at 和 cron 黑白名单问题:

/etc/at.deny      #at 黑名单,默认存在。

/etc/cron.deny    #cron 黑名单,默认存在。

/etc/at.allow      #at 白名单,默认不存在。

/etc/cron.allow    #cron 白名单,默认不存在。

注意:1.白名单优先级高于黑名单,同时存在时白名单生效

    2.少量用户可以使用,用白名单

    3.大量用户可以使用,个别用户不能使用,用黑名单

    4.当建立白名单文件后,必须存在白名单内才能使用

15 21 * * 1-5 mail -s “hi” root@panda < /etc/fstab

二、日志的种类和记录的方式-自定义 ssh 服务日志类型和存储位置

在 centos7 中,系统日志消息由两个服务负责处理:systemd-journald 和 rsyslog

1、常见日志文件的作用

系统日志文件概述:/var/log 目录保管由 rsyslog 维护的,里面存放的一些特定于系统和服务的日志文件

Linux系统管理---linux计划任务和日志的管理

2.应用

1)查看哪个 IP 地址经常暴力激活成功教程系统用户密码

【】# ssh root@192.168.1.13

【】# grep Failed /var/log/secure

Aug 19 21:55:42 panda sshd[84029]: Failed password for root from 10.10.30.130 port 50916 ssh2

Aug 19 21:55:44 panda sshd[84029]: Failed password for root from 10.10.30.130 port 50916 ssh2

Aug 19 21:55:47 panda sshd[84029]: Failed password for root from 10.10.30.130 port 50916 ssh2

Aug 19 21:55:52 panda sshd[84034]: Failed password for root from 10.10.30.130 port 50917 ssh2

【】# grep Failed /var/log/secure|awk ‘{print $11}’|uniq -c

3 192.168.1.13

注:awk ‘{print $11}’ #以空格做为分隔符,打印第 11 列的数据

2)查询登录次数

/var/log/wtmp 文件的作用

/var/log/wtmp 也是一个二进制文件,记录每个用户的登录次数和持续时间等信息。

可以用 last 命令输出 wtmp 中内容: last 显示到目前为止,成功登录系统的记录

[root@localhost ~]# last

root pts/2 192.168.1.8 Tue May 22 00:35 still logged in

root pts/2 192.168.1.8 Mon May 21 20:42 – 00:35 (03:53)

或:

【】# last -f /var/log/wtmp

3)使用 /var/log/btmp 文件查看暴力激活成功教程系统的用户

/var/log/btmp 文件是记录错误登录系统的日志。如果发现/var/log/btmp 日志文件比较大,大于 1M,就算大了,就说明很多人在暴力激活成功教程 ssh 服务,此日志需要使用 lastb 程序查看

【】# lastb

root ssh:notty localhost .cn Mon May 21 21:49 – 21:49 (00:00) root ssh:notty localhost .cn Mon May 21 21:49 – 21:49 (00:00)

发现后,

4)防火墙禁ip

使用防火墙,拒绝掉:命令如下:

iptables -A INPUT -i ens33 -s 192.168.1.13(暴力激活成功教程地址) -j DROP

#将新规则追加于尾部入站请求 ens33 网卡,地址是 192.168.1.13 的 IP,被丢弃。

5)清空日志:

方法 1:【】# > /var/log/btmp

方法 2: 【】rm -rf /var/log/btmp && touch /var/log/btmp

6)如何防止日志删除

【】# chattr +a /var/log/sshd.log

【】# lsattr /var/log/sshd.log

—–a———- /var/log/sshd.log

【】# systemctl restart sshd

【】# cat /var/log/sshd.log #重启服务,查看日志有所增加

【】# chattr -a /var/log/sshd.log #取消,这里一定要取消,不然后面做日志切割

报错

三.日志的规则

1、日志的记录方式 分类 级别

1)日志的分类:

daemon    后台进程相关

kern      内核产生的信息

lpr       打印系统产生的

authpriv  安全认证

cron      定时相关

mail      邮件相关

syslog    日志服务本身的

news      新闻系统

local0-local7 8 个系统保留的类, 供其它的程序使用或者是用户自定义

2)日志的级别

: 轻重

Linux系统管理---linux计划任务和日志的管理

3)类别.级别举例

authpriv.* 认证的信息存放 /var/log/secure

mail.* 邮件相关的信息 存放 -/var/log/maillog

cron.* 计划任务相关的信息 存放 /var/log/cron

local7.* 开机时显示的信息存放–> /var/log/boot.log

注:

“- ”号: 邮件的信息比较多,现将数据存储到内存,达到一定大小,全部写到硬盘.有利于减少 I/O 进程的开销 数据存储在内存,如果关机不当数据消失

四、rsyslog 日志服务

1》rhel5 ->服务名称 syslog ->配置文件 /etc/syslog.conf

2》rhel6-7 ->服务名称 rsyslog ->配置文件 /etc/rsyslog.conf

我们来查看一下

五、日志的配置文件信息:

编辑配置文件 vim /etc/rsyslog.conf

*.info;mail.none;authpriv.none;cron.none  /var/log/messages

authpriv.*        /var/log/secure

mail.*            -/var/log/maillog

cron.*            /var/log/cron

*.emerg :           omusrmsg:* (内核奔溃广播)

uucp,news.crit      /var/log/spooler

local7.*            /var/log/boot.log

注释:

#$UDPServerRun 514           #允许514端口接收使用UDP协议转发过来的日志

#$InputTCPServerRun 514      #允许514端口接收使用UDP协议转发过来的日志

#kern.* 内核类型的所有级别日志         存放到 /dev/console

*.info;mail.none;authpriv.none;cron.none          /var/log/messages

所有的类别级别是 info 以上 除了 mail,authpriv,cron (产生的日志太多,不易于查看)

1)日志输入的规则

. info      大于等于 info 级别的信息全部记录到某个文件

.=级别      仅记录等于某个级别的日志

例:.=info   只记录 info 级别的日志

.! 级别     除了某个级别意外,记录所有的级别信息

例.!err     除了 err 外记录所有

.none       指的是排除某个类别 例: mail.none 所有 mail 类别的日志都不记录

2)定义自己的日志方法

【】# vim /etc/rsyslog.conf

*.* /var/log/alert.log #在 62 行左右写入。*.*记录所有情况的日志。便于观看实验效果。保存到/var/log/alert.log

【】# systemctl restart rsyslog.service

关闭系统日志记录器: [确定]

启动系统日志记录器: [确定]

#重启 rsyslog 服务,使配置生效。

【】# ll /var/log/alert.log

-rw——- 1 root root 1520 11 月 13 18:22 /var/log/alert.log

如何防止日志删除

【】# chattr +a /var/log/sshd.log

【】# lsattr /var/log/sshd.log

—–a———- /var/log/sshd.log

【】# systemctl restart sshd

【】# cat /var/log/sshd.log #重启服务,查看日志有所增加

【】# chattr -a /var/log/sshd.log #取消,这里一定要取消,不然后面做日志切割

报错

当日志太多,导致日志很文件大怎么办? 3.2

六.日志的切割

1)logrotate 配置文件主要有:

/etc/logrotate.conf 以及 /etc/logrotate.d/ 这个子目录下的明细配置文件。

logrotate 的执行由 crond 服务调用的。

【】# vim /etc/cron.daily/logrotate #查看 logrotate 脚本内容

logrotate 程序每天由 cron 在指定的时间(/etc/crontab)启动

        日志是很大的,如果让日志无限制的记录下去 是一件很可怕的事情,日积月累就有几百兆占用磁盘的空间,如果你要找出某一条可用信息:

日志切割:

当日志达到某个特定的大小,我们将日志分类,之前的日志保留一个备份,再产生的日志创建一个同名的文件保存新的日志.

实战演示:

2)编辑配置文件

【】# vim /etc/logrotate.conf

Linux系统管理---linux计划任务和日志的管理

说明:(全局参数)

weekly : 每周执行回滚,或者说每周执行一次日志回滚

rotate: 表示日志切分后历史文件最多保存离现在最近的多少份 [rəʊˈteɪt] 旋转

create : 指定新创建的文件的权限与所属主与群组

dateext : 使用日期为后缀的回滚文件 #可以去/var/log 目录下看看

单独配置信息

Linux系统管理---linux计划任务和日志的管理

Linux系统管理---linux计划任务和日志的管理

其它参数说明:

monthly: 日志文件将按月轮循。其它可用值为‘daily’,‘weekly’或者‘yearly’。

rotate 5: 一次将存储 5 个归档日志。对于第六个归档,时间最久的归档将被删除。

compress: 在轮循任务完成后,已轮循的归档将使用 gzip 进行压缩。

delaycompress: 总是与 compress 选项一起用,delaycompress 选项指示 logrotate 不要将最近的归档压缩,

压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。

missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。

notifempty: 如果日志文件为空,轮循不会进行。

create 644 root root: 以指定的权限创建全新的日志文件,同时 logrotate 也会重命名原始日志文件。

prerotate/endscript:在日志轮替之前执行脚本命令。endscript 标识 prerotate 脚本结束。

postrotate/endscript:在日志轮替之后执行脚本命令。endscript 标识 postrotate 脚本结束。

sharedscripts:在此关键字之后的语句执行一次。

3)logrotate 命令:

格式:logrotate [选项] 配置文件名

选项:如果此命令不添加子选项,则会按照配置文件中的条件进行日志轮替。

-d:测试

-v:显示日志轮替过程。加-v 选项会显示日志的轮替过程。

-f:强制进行日志轮替。不管日志轮替的条件是否已经符合,强制配置文件中的所有日志进行轮替。

[root@localhost ~]# vim /etc/logrotate.d/all

[root@localhost ~]#systemctl restart rsyslog.service

[root@localhost ~]# logrotate -d /etc/logrotate.d/sshd #预演,不实际轮循

[root@localhost ~]# logrotate -vf /etc/logrotate.d/sshd #强制轮循,也就是说即使轮循条件没有满足,也可以通过加-f 强制让 logrotate 轮循日志文件

七、搭建远程日志收集服务器-日志切割

搭建日志服务器流程

前提:两台服务器之间可以互相通信

服务器端:

 1.开启端口TCP/UDP

编辑配置文件 vim /etc/rsyslog.conf

#$UDPServerRun 514           #允许514端口接收使用UDP协议转发过来的日志

#$InputTCPServerRun 514      #允许514端口接收使用UDP协议转发过来的日志

删除#号

 2.重启rsyslog

【】#systemctl restart rsyslog.service

 3.查看端口是否打开

    netstat   -anpt  找514

 4.关闭防火墙及保护机制

客户端

修改主机名  hostnamectl  set-hostname(用来在日志中区分)

1.自定义日志并且定义日志保存位置

【】vim /etc/rsyslog.conf

保存位置 TCP用@@IP  UDP用@IP

2.重启rsyslog 

 【】systemctl restart rsyslog.service

3.关闭防火墙及保护机制

日志服务器的设置

假设服务器端的服务器 IP 地址是 192.168.22.210,主机名是 localhost.localdomain;客户端的服务器 IP 地址是 192.168.22.211,主机名是 www1.我们现在要把 192.168.1.211 的日志保存到 192.168.1.210 这台服务器上。

例:

#客户端服务器端需要关闭 SELinux 和 firewalld。

1.服务器端(192.168.22.210)

【】# vim /etc/rsyslog.conf

$ModLoad imtcp

$InputTCPServerRun 514

#取消注释。

【】#systemctl restart rsyslog.service #重启服务。

【】# netstat -tlun | grep 514

tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN

tcp 0 0 :::514 :::* LISTEN

2.客户端设定(192.168.22.211)

【】# hostname www1

【】# hostname

www1

【】# vim /etc/rsyslog.conf

*.* @@192.168.22.210:514

#把所有日志采用 TCP 协议发送到 192.168.22.210 的 514 端口上。默认修改位置为 61 行左右。

【】# systemctl restart rsyslog.service

例如:

【】# useradd roushan

【】# passwd roushan

#添加 roushan 用户,此时是 www1 主机名。

去服务器查看(192.168.22.210):

【】# cat /var/log/secure | grep “www1”

总结:

1 计划任务-at-cron-计划任务使用方法

2 日志的种类和记录的方式-自定义日志类型和存储位置

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158656.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • django验证码登录_双重认证怎么关闭

    django验证码登录_双重认证怎么关闭djoser是什么?作用:Django认证系统的REST实现。djoser库提供了一组DjangoRestFramework视图,用于处理注册、登录、注销、密码重置和帐户激活等基本操作。它适用于

  • sql mysql创建 视图索引_SQLServer中在视图上使用索引(转载)「建议收藏」

    sql mysql创建 视图索引_SQLServer中在视图上使用索引(转载)「建议收藏」在SQLServer中,视图是一个保存的T-SQL查询。视图定义由SQLServer保存,以便它能够用作一个虚拟表来简化查询,并给基表增加另一层安全。但是,它并不占用数据库的任何空间。实际上,在你查询它之前,视图并不做任何事情。索引视图在SQLServer2000和2005中,你能够给视图增加索引。但是,如果视图只是一个保存在数据库中的查询定义,在运行前没有自己的数据,你如何给那个定义建立…

  • R-L模型算法的优缺点_审计重要性特征

    R-L模型算法的优缺点_审计重要性特征1.特征重要性的意义LR模型也就是逻辑回归模型,作为一个简单的常用的模型,其有非常多的有点,除了模型简单,容易实现分布式,还有一个重要的优点就是模型的可解释性非常好。因为每个特征都对应一个模型参数wiw_{i}wi​,该参数越大,那么该特征对模型预测结果的影响就会越大,我们就说该特征就越重要,因此LR模型的特征重要性评估方式就是wiw_{i}wi​的大小。2.逻辑回归模型特征重要性及排序Ta…

  • linux环境安装mariadb,linux环境下安装Mariadb

    linux环境安装mariadb,linux环境下安装Mariadb一、下载安装mariadb是属于mysql的一个分支,是其创始人在mysql被卖给oracle之后重新分出来的,maria取自于他女儿的名字。mariadb完全兼容于mysql,在很多新版本的linux系统中,mysql都已经被替换成了mariadb。mariadb的官网:mariadb官网,下载地址:下载地址。最新稳定版本的下载直链为:wgethttps://downloads.mariadb…

  • C++\QT常见面试题[通俗易懂]

    C++\QT常见面试题[通俗易懂]1.C与C++的区别2.深拷贝和浅拷贝的区别3.指针和引用的区别4.什么是面向对象,面向对象的三大特征是什么?5.static关键字的用法6.const关键字的用法7.什么是函数重载8.创建的对象有几种方式,有什么区别9.什么是构造函数10.什么是this指针11.抽象类是什么12.什么是封装、继承、多态13.私有继承,保护继承和公有继承的区别14.友元函数15.new和delete16.C++STL容器有哪些17.什么是面向对象编程的开放封闭原则?18.内联函数与宏的区

  • 我个人中意的VS2017/VS2019插件,推荐给大家(#^.^#)

    我个人中意的VS2017/VS2019插件,推荐给大家(#^.^#)1、VS插件,微软官网https://marketplace.visualstudio.com/https://visualstudio.microsoft.com/zh-hans/vs/features/extend/–扩展VisualStudioIDE,入门教程https://marketplace.visualstudio.com/publishers/Microso…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号