首页 > 系统相关 >Linux定时任务

Linux定时任务

时间:2023-01-10 16:13:10浏览次数:39  
标签:echo etc 任务 lnh Linux 定时 root swap

定时任务

一、概述

定时任务:用于执行在Linux中的重复行工作:命令(同步系统时间),脚本(备份,系统巡检)

类似于闹钟

二、服务使用流程

服务使用流程 说明
部署 安装这个服务或软件
配置 如何使用这个服务通过配置文件,通过命令
优化或注意事项 为了安全
排障 通过错误提示解决
学会看日志
高级:让服务输出错误提示或输出更加详细的错误提示(通过重定向)
其他 做好监控
做好备份
做好日志收集
统一认证

三、部署定时任务

定时任务包的名字:cronie

服务名称(进程):crond

[root@lnh ~]# rpm -qa |grep cronie
cronie-anacron-1.4.11-23.el7.x86_64
cronie-1.4.11-23.el7.x86_64
[root@lnh ~]# rpm -ql cronie
/etc/cron.d
/etc/cron.d/0hourly
/etc/cron.deny
/etc/pam.d/crond
/etc/sysconfig/crond
/usr/bin/crontab
/usr/lib/systemd/system/crond.service
/usr/sbin/crond
/usr/share/doc/cronie-1.4.11
/usr/share/doc/cronie-1.4.11/AUTHORS
/usr/share/doc/cronie-1.4.11/COPYING
/usr/share/doc/cronie-1.4.11/ChangeLog
/usr/share/doc/cronie-1.4.11/INSTALL
/usr/share/doc/cronie-1.4.11/README
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/man/man8/cron.8.gz
/usr/share/man/man8/crond.8.gz
/var/spool/cron
目录结构 说明
/var/spool/cron 用户的定时任务的配置文件的目录
crontab 定时任务管理的命令
/var/log/cron 定时任务日志
了解的配置文件
/etc/crontab 不推荐使用这个,系统定时任务的配置文件
/etc/cron.hourly/ 系统定时任务,每小时运行
/etc/cron.daily/ 系统定时任务,每天运行
/etc/cron. 系统定时任务,每周运行
/etc/cron. 系统定时任务,每个月运行

四、完全使用指南

1.配置的命令

选项 说明
crontab -e edit 编辑当前用户的定时任务 vi /var/spool/cron/root #root当前的用户的名字
crontab -l list 查看当前用户的定时任务 cat /var/spool/cron/root #root当前的用户的名字
[root@lnh ~]# crontab -l
no crontab for root
#用户未设置定时任务

[root@lnh ~]# crontab -e
no crontab for root - using an empty one
#用户未设置定时任务		新建一个空的

crontab: installing new crontab
#		  更新了定时任务的配置

2. 定时任务书写格式 必会

image

#每天早上8:30分 去学校(go to school)
30 08 * * * go to school

#晚上12点上床睡觉(go to bed/sleep) 
00 00 * * * go to bed

#注:
#* 00 * * * go to bed 这个格式表示每天的半夜12点00-59 每分钟运行
#表示整点的时候,未说明分钟的时候,我们要指定的分钟,一般是00

3. 定时任务时间部分的特殊符号 必会

时间部分特殊符号 说明 案例
/ 每隔xxx时间 */2 * * * * 每2分钟
00 */2 * * * 每2个小时
- 表示范围 00 08-22 * * * 08-22点的每个小时运行
00 08-22/3 * * * 08-22点的每3个小时运行
表示独立时间(没规律) 00 08,11,20 * * * 08,11,20点的时候运行
* 每,全部/所有 * 在分钟的位置上表示00-59 每分钟的意思
* 在小时的位置上表示00-23 每小时的意思
#每天的上午7点到晚上11点 每二个小时运行CMD命令
00 07-23/2  * * * CMD
#定时任务每天23点到第2天的7点运行.
00 23,00-07 * * * CMD

五、定时任务案例

1.每2分钟同步下系统的时间 必会

#写配置文件
[root@lnh ~]# crontab -e
#1.同步时间
*/2 * * * * /sbin/ntpdate ntp1.aliyun.com

#测试
[root@lnh ~]# date -s '20220101'
Sat Jan  1 00:00:00 CST 2022
[root@lnh ~]# date
Sat Jan  1 00:01:09 CST 2022
[root@lnh ~]# date
Sat Jan  1 00:02:06 CST 2022
[root@lnh ~]# date
Thu Dec 29 17:27:55 CST 2022
You have new mail in /var/spool/mail/root

日志:查看这个定时任务是否运行

[root@lnh ~]# tail -f /var/log/cron
Jan  1 00:01:07 lnh crontab[6681]: (root) REPLACE (root)
Jan  1 00:01:07 lnh crontab[6681]: (root) END EDIT (root)
Jan  1 00:02:01 lnh crond[1093]: (root) RELOAD (/var/spool/cron/root)
Jan  1 00:02:01 lnh CROND[6700]: (root) CMD (/sbin/ntpdate ntp1.aliyun.com)
Dec 29 17:28:01 lnh CROND[6711]: (root) CMD (/sbin/ntpdate ntp1.aliyun.com)

查看输出

[root@lnh ~]# cat /var/spool/mail/root
Date: Thu, 29 Dec 2022 17:32:07 +0800 (CST)

29 Dec 17:32:07 ntpdate[6730]: adjust time server 120.25.115.20 offset 0.000055 sec

2.每天定时备份/etc/ 到/backup/下面

备份时间:业务低谷期

  1. 命令:tar命令
  2. 脚本:命令大礼包 .sh结尾
  3. 定时任务配置:每分钟运行
  4. 调式完成改为要求的时间
#命令
[root@lnh ~]# mkdir -p /backup/
[root@lnh ~]# tar zcf /backup/etc-`date +%F`.tar.gz /etc/

#脚本
#创建脚本目录
[root@lnh ~]# mkdir -p /servers/scripts

#书写脚本
[root@lnh scripts]# cat backup-etc.sh.bak 
tar zcf /backup/etc-`date +%F`.tar.gz /etc/

#执行脚本
[root@lnh scripts]# sh backup-etc.sh 


#修改定时任务
[root@lnh scripts]# crontab -l
#1.同步时间
#*/2 * * * * /sbin/ntpdate ntp1.aliyun.com
#2. 备份etc目录
* * * * *  sh /servers/scripts/backup-etc.sh 

3.脚本与变量

概述:在脚本中需要重复使用的内容(时间,ip地址..........),我们最好把这些内容存放到变量中,咋脚本中重复使用

#变量命令
#向变量赋值
#取值
[root@lnh ~]# time=`date +%F_%T`
[root@lnh ~]# echo $time
2022-12-29_14:57:23
[root@lnh ~]# echo $time
2022-12-29_14:57:23
[root@lnh ~]# time=`date +%F_%T`
[root@lnh ~]# echo $time
2022-12-29_14:57:27

变量命令规则:

不能以数字开头

如果要用是特殊符号,最好使用_

变量名字能够体现出变量作用

应用

[root@lnh scripts]# cat backup-etc.sh
#1.定义变量
backup_dir=/backup
time=`date +%F_%w`

#2.备份
tar zcf ${backup_dir}/etc-${time}.tar.gz /etc/

FAQ:

分时日月周,在取第几周的时候,会不会于日互相冲突,日不符合周 会不会乱

不推荐:周几与日期一起写.

定时任务失败排障法:

没有日志(crond服务没有运行,rsyslog服务没有运行)

没有结果(手动运行对应的命令或脚本)

调试脚本(sh -x 或bash -x 显示脚本的执行过程,有+的表示过程,没有+的表示输出)

六、定时任务注意事项(箴言)

1.增加注释

书写定时任务的时候,尽量添加上一个注释,用于说明这条定时任务的作用

2.尽量使用脚本

定时任务未来避免一些故障,推荐使用脚本

调试脚本的方法:

sh -x 或bash -x,显示脚本的执行过程

有+开头的表示脚本背后的执行过程

没有+开头的表示输出

[root@lnh scripts]# cat backup-etc.sh
#!/etc/bash
#desc: 备份脚本  加上ip地址

#1.定义变量
ip=`hostname -I |awk '{print $1}'`
backup_dir=/backup/${ip}
time=`date +%F_%w`

#2.备份
mkdir -p ${backup_dir}
tar zcf ${backup_dir}/etc-${time}.tar.gz /etc/
[root@lnh scripts]# sh -x backup-etc.sh 
++ hostname -I
++ awk '{print $1}'
+ ip=10.0.0.200
+ backup_dir=/backup/10.0.0.200
++ date +%F_%w
+ time=2023-01-02_1
+ mkdir -p /backup/10.0.0.200
+ tar zcf /backup/10.0.0.200/etc-2023-01-02_1.tar.gz /etc/
tar: Removing leading `/' from member names

3.定时任务的文件,脚本使用绝对路径

书写定时任务的时候,相关文件要使用绝对路径

[root@lnh scripts]# crontab -l
#1.同步时间
#*/2 * * * * /sbin/ntpdate ntp1.aliyun.com    &>/dev/null
#2.备份etc目录
#* * * * *  sh /servers/scripts/backup-etc.sh &>/dev/null
#3.查看ip
#* * * * * sh /servers/scripts/ip.sh          &>>/tmp/ip.log 

4.命令使用绝对路径

定时任务中直接写命令,可以加上绝对路径

定时任务中运行,脚本开头可以重新设置PATH变量

5.定时任务中执行的命令或脚本定向到空或者追加到文件

[root@lnh scripts]# crontab -l
#1.同步时间
#*/2 * * * * /sbin/ntpdate ntp1.aliyun.com    &>/dev/null
#2.备份etc目录
#* * * * *  sh /servers/scripts/backup-etc.sh &>/dev/null    #定向到空
#3.查看ip
#* * * * * sh /servers/scripts/ip.sh          &>>/tmp/ip.log #追加到文件

七、定时任务故障案例

1.定时任务直接书写的时候%有特殊的含义

% 回车

去掉特殊含义,使用\

2.定时任务关于命令路径的故障

故障案例:

现象:命令行执行命令或脚本是成功的,交到了定时任务中执行,提示命令找不到

原因:定时任务运行脚本的时候或命令的时候,只能识别到/bin 或/usr/bin目录下面的命令,其他命令无法识别

解决方案:

  1. 遇到不识别的命令,直接写绝对路径
  2. 在脚本开头,重新定义下PATH环境变量或重新加载下PATH环境变量

定时任务识别的命令的路径:

PATH linux环境变量,存放命令的位置.

linux会在PATH路径中查找,如果有则执行.如果没有提示command not found/ no such file or directory

#使用第一种方法
[root@lnh scripts]# cat ip.sh 
#!/bin/bash
/usr/sbin/ifconfig eth0
/usr/sbin/ip a s eth0



#使用第二种方法
[root@lnh scripts]# cat ip.sh 
#!/bin/bash

#source /etc/profile                     #重新加载PATH环境变量      
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
									     #重新定义PATH环境变量
ifconfig eth0
ip a s eth0

3.定时任务没有定向到空或追加到文件故障案例

现象:

邮件服务开启:不断受到邮件 You have new mail in /var/spool/mail/root

邮件服务关闭:一些邮件的临时目录不断堆积小文件 /var/spool/postfix/maildrop

原因:

定时任务运行命令或脚本的时候,命令或脚本有输出,定时任务就会通过邮件发送给root

解决:

定时任务中命令或脚本定向到空或追加到文件

八、使用案例

1. 定时备份/etc/目录到/backup以ip地址命名的目录中

[root@lnh scripts]# cat backup-etc.sh
#!/etc/bash
#desc: 备份脚本  加上ip地址

#1.定义变量
ip=`hostname -I |awk '{print $1}'`
backup_dir=/backup/${ip}
time=`date +%F_%w`

#2.备份
mkdir -p ${backup_dir}
tar zcf ${backup_dir}/etc-${time}.tar.gz /etc/

2. 定时系统巡检(定时输出系统基本信息)写入到/tmp/sys.log中

主机名信息(主机名)
ip地址
负载信息(0 0 0)
内存信息(内存多大,用了多少,剩余多少)
cpu信息(核心数)
磁盘信息(磁盘使用多少,剩余多少)
进程信息(一共多少进程,几个运行,几个挂起,几个僵尸)

#################################
主机名: oldboyedu   ip地址: 10.0.0.200
#################################
负载信息
最近1分钟:   0
最近5分钟:   0
最近15分钟:  0
#################################
内存信息(单位kb)
总计内存:   2000000
内存使用了多少:  200000
内存使用率:    10%
#################################
swap信息
swap总大小:   200000
swap使用大小:  0
swap使用率:    0
#################################
磁盘信息
几块硬盘:  1
根分区大小: 20G
根分区使用率: 10%
################################
进程信息
进程总数:    100
运行中进程:   2
挂起进程数量: 0
僵尸进程数量: 0
################################
[root@lnh scripts]# cat sys-info.sh 
#!/bin/bash
#作者:wh
#说明:系统巡检脚本
#版本:v1

#1.基础信息
hostname=`hostname`
ip=`hostname -I`
echo "===================================="
echo "基本信息:"
echo "主机名: ${hostname}"
echo "ip地址: ${ip}"
echo "===================================="

#2.负载
load1=`uptime |awk -F '[ ,]+' '{print $(NF-2)}'`
load5=`uptime |awk -F '[ ,]+' '{print $(NF-1)}'`
load15=`uptime |awk -F '[ ,]+' '{print $NF}'`
echo "===================================="
echo "负载信息:"
echo "最近1 分钟负载: ${load1}"
echo "最近5 分钟负载: ${load5}"
echo "最近15分钟负载: ${load15}"
echo "===================================="

#3.内存
mem_total=`free -m |awk 'NR==2{print $2}'`
mem_used=`free -m |awk 'NR==2{print $3+$6}'`
mem_used_percent=`free -m |awk 'NR==2{print ($3+$6)/$2*100"%"}'`
echo "===================================="
echo "内存信息:"
echo "总计内存: ${mem_total}M"
echo "使用内存: ${mem_used}M"
echo "内存使用率: ${mem_used_percent}"
echo "===================================="

#4.swap
swap_total=`free -m |awk 'NR==3{print $2}'`
swap_used=`free -m |awk 'NR==3{print $3+$6}'`
swap_used_percent=`free -m |awk 'NR==3{print ($3+$6)/$2*100"%"}'`
echo "===================================="
echo "swap信息:"
echo "总计swap: ${swap_total}M"
echo "使用swap: ${swap_used}M"
echo "swap使用率: ${swap_used_percent}"
echo "===================================="

#5.磁盘信息
disk_total=`fdisk -l 2>/dev/null |grep '/dev/sd[a-z][::]'|wc -l`
root_size=`df -h|awk '$NF=="/"{print $2}'`
root_used_percent=`df -h|awk '$NF=="/"{print $5}'`
echo "===================================="
echo "磁盘信息:"
echo "几块磁盘: ${disk_total}块"
echo "根分区大小: ${root_size}"
echo "根分区使用率: ${root_used_percent}"
echo "===================================="

#6.进程信息
proc_total=`top -bn1 |awk 'NR==2{print $2}'`
proc_running=`top -bn1 |awk 'NR==2{print $4}'`
proc_stopped=`top -bn1 |awk 'NR==2{print $8}'`
proc_zombie=`top -bn1 |awk 'NR==2{print $10}'`
echo "===================================="
echo "进程信息:"
echo "进程总数:${proc_total}"
echo "运行的进程: ${proc_running}"
echo "挂起的进程: ${proc_stopped}"
echo "僵尸进程: ${proc_zombie}"
echo "===================================="
[root@lnh scripts]# sh sys-info.sh 
====================================
基本信息:
主机名: lnh
ip地址: 10.0.0.200 
====================================
====================================
负载信息:
最近1 分钟负载: 0.00
最近5 分钟负载: 0.01
最近15分钟负载: 0.05
====================================
====================================
内存信息:
总计内存: 1980M
使用内存: 382M
内存使用率: 19.2929%
====================================
====================================
swap信息:
总计swap: 2047M
使用swap: 0M
swap使用率: 0%
====================================
====================================
磁盘信息:
几块磁盘: 1块
根分区大小: 47G
根分区使用率: 6%
====================================
====================================
进程信息:
进程总数:104
运行的进程: 2
挂起的进程: 0
僵尸进程: 0
====================================

3.发送邮件

配置发件人:163

获取:授权码

image

linux配置/etc/mail.rc

[root@lnh ~]# vim /etc/mail.rc  #写到最后
#未加密的发送方式通过25端口,会被公有云封掉
cat >>/etc/mail.rc <<EOF
set from=163邮箱
set smtp=smtp.163.com
set smtp-auth-user=163邮箱
set smtp-auth-password=163授权码
set smtp-auth=login
EOF

#加密的方式通过465端口
cat >>/etc/mail.rc <<EOF
set nss-config-dir=/etc/pki/nssdb/
set smtp-user-starttls
set ssl-verify=ignore
set from=163邮箱                      #配置发件人
set smtp=smtps://smtp.163.com:465
#配置使用163发送邮件 如果是加密smtps://smtp.163.com:465
set smtp-auth-user=163邮箱              #用户名:邮箱名字
set smtp-auth-password=163授权码
set smtp-auth=login                    #认证形式login
EOF

配置加密方式发送邮件错误: Error in certificate: Peer's certificate issuer is not recognized

echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/pki/nssdb/163.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d /etc/pki/nssdb/ -i /etc/pki/nssdb/163.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d /etc/pki/nssdb/ -i /etc/pki/nssdb/163.crt
certutil -L -d /etc/pki/nssdb/
cd /etc/pki/nssdb/
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i 163.crt
#发送邮件
cat /backup/result.log |mail -s "今日巡检的结果"  qq邮箱
mail -s '今日巡检的结果' qq邮箱 </backup/result.log

#发送邮件带上附件
echo "巡检信息在附件" |mail  -s "巡检结果"  -a /backup/result.log    qq邮箱
#注:邮箱要写在最后

#写入定时任务脚本
sh /server/scripts/send-mail.sh

调用执行sh /server/scripts/sys-info.sh 脚本
上面脚本的结果写入到/backup/result.log文件中
通过mail命令把result.log发送给对应的用户

#写入定时任务
* * * * * sh /server/scripts/send-mail.sh &>/dev/null

4.生成表格

csv用逗号分隔脚本

[root@lnh scripts]# cat sys-info-csv.sh 
#!/bin/bash
#作者:wh
#说明:系统巡检脚本
#版本:v1

#1.基础信息
hostname=`hostname`
ip=`hostname -I`
echo "基本信息,"
echo "主机名, ${hostname}"
echo "ip地址, ${ip}"

#2.负载
load1=`uptime |awk -F '[ ,]+' '{print $(NF-2)}'`
load5=`uptime |awk -F '[ ,]+' '{print $(NF-1)}'`
load15=`uptime |awk -F '[ ,]+' '{print $NF}'`
echo "负载信息,"
echo "最近1 分钟负载, ${load1}"
echo "最近5 分钟负载, ${load5}"
echo "最近15分钟负载, ${load15}"

#3.内存
mem_total=`free -m |awk 'NR==2{print $2}'`
mem_used=`free -m |awk 'NR==2{print $3+$6}'`
mem_used_percent=`free -m |awk 'NR==2{print ($3+$6)/$2*100"%"}'`
echo "内存信息,"
echo "总计内存, ${mem_total}M"
echo "使用内存, ${mem_used}M"
echo "内存使用率, ${mem_used_percent}"

#4.swap
swap_total=`free -m |awk 'NR==3{print $2}'`
swap_used=`free -m |awk 'NR==3{print $3+$6}'`
swap_used_percent=`free -m |awk 'NR==3{print ($3+$6)/$2*100"%"}'`
echo "swap信息,"
echo "总计swap, ${swap_total}M"
echo "使用swap, ${swap_used}M"
echo "swap使用率, ${swap_used_percent}"

#5.磁盘信息
disk_total=`fdisk -l 2>/dev/null |grep '/dev/sd[a-z][::]'|wc -l`
root_size=`df -h|awk '$NF=="/"{print $2}'`
root_used_percent=`df -h|awk '$NF=="/"{print $5}'`
echo "磁盘信息,"
echo "几块磁盘, ${disk_total}块"
echo "根分区大小, ${root_size}"
echo "根分区使用率, ${root_used_percent}"

#6.进程信息
proc_total=`top -bn1 |awk 'NR==2{print $2}'`
proc_running=`top -bn1 |awk 'NR==2{print $4}'`
proc_stopped=`top -bn1 |awk 'NR==2{print $8}'`
proc_zombie=`top -bn1 |awk 'NR==2{print $10}'`
echo "进程信息,"
echo "进程总数:${proc_total}"
echo "运行的进程, ${proc_running}"
echo "挂起的进程, ${proc_stopped}"
echo "僵尸进程, ${proc_zombie}"

[root@lnh scripts]# sh sys-info-csv.sh 
基本信息,
主机名, lnh
ip地址, 10.0.0.200 
负载信息,
最近1 分钟负载, 0.06
最近5 分钟负载, 0.04
最近15分钟负载, 0.05
内存信息,
总计内存, 1980M
使用内存, 384M
内存使用率, 19.3939%
swap信息,
总计swap, 2047M
使用swap, 0M
swap使用率, 0%
磁盘信息,
几块磁盘, 1块
根分区大小, 47G
根分区使用率, 6%
进程信息,
进程总数:106
运行的进程, 1
挂起的进程, 0
僵尸进程, 0
linux文件转到windows,使用execl打开乱码处理方法
iconv  -f utf8 -t  gbk   result.csv  >result-windows.csv
result.csv 是linux生成的
result-windows.csv 是windows office可以打开的

[root@lnh scripts]# iconv  -f utf8 -t  gbk   sys-info.csv  >sys-info-windows.csv
[root@lnh scripts]# sz sys-info-windows.csv

image

标签:echo,etc,任务,lnh,Linux,定时,root,swap
From: https://www.cnblogs.com/world-of-yuan/p/17023382.html

相关文章

  • 使用crontab设置定时脚本
    转自于:http://t.zoukankan.com/whiteprism-p-6548935.htmlcrontab的几种常见用法:1、编辑一个文本文件,写上任务列表,然后运行crontab文件名2、crontab-e,就可直接在vi界面......
  • 【Linux】常用nvidia-smi命令详解
    ✨nvidia-smiNVIDIA系統管理介面(nvidia-smi)是一個命令行工具,基於NVIDIAManagementLibrary(NVML)之勝,旨在協助管理和監控NVIDIAGPU設備。此实用程序允许管理员查......
  • Linux建立快捷键
    要新建快捷命令,需要root账号下才能设置建立永久快捷键路径:/root/编辑.bashrc:#vim.bashrc在命令行输入:aliasl='ls-al'保存退出::wqsource~/.bashrc(或者.~/.ba......
  • Linux下查看文件占用的空间及程序占用的内存
    1.查看目前磁盘空间和使用情况df-h2.查看当前路径下每个文件夹的大小du-sh*3.通过 top 命令动态查看内存占用top4. 查看内存占用前10名的程序psau......
  • 超深度解析 Linux I/O 的那些事儿
    本文主要以一张图为基础,向大家介绍Linux在I/O上做了哪些事情,即Linux中直接I/O原理,希望本文的经验和思路能为读者提供一些帮助和思考。我们先看一张图:这张图大体上描......
  • cdc-file-transfer 谷歌开源的windows 到linux 同步工具
    cdc-file-transfer是基于contentdefinedchunking以及fastcdc技术,cdc-file-transfer目前提供了两种工具cdc_rsync类似rsync的同步能力,进行文件拷贝,但是性能相比rsyn......
  • hcache查看linux系统缓存的占用情况
    hcache是基于pcstat的,pcstat可以查看某个文件是否被缓存和根据进程pid来查看都缓存了哪些文件。hcache在其基础上增加了查看整个操作系统Cache和根据使用Cache大小排序的特......
  • android 原生打包到混合开发框架uniapp 和cordova (1) ----Android Studio中的Gradle面
    AndroidStudio中的Gradle面板没有Task任务列表 Tasklistnotbuiltduring sync 找不到gradle命令解决:1.找到gradle工具栏2.点击图中扳手->选中gradlesettin......
  • Linux 搜索所有文件内容截取所需记录
    由于一些需求需要,遍历某目录先所有文件,找出某行的关键信息。如:搜索所有 jsp 文件的内容,找出"spring:message"所在行,并取引号内的字符串。(如下图,取粉色框中的字符串)第一步,......
  • SSIS_控制流(大容量插入任务)
    大容量插入任务为将大量的数据复制到SQLServer表或视图提供了有效的方法。例如,假定贵公司在大型主机系统上存储了数百万行的产品列表,但公司的电子商务系统却使用SQLSer......