分类 Windows 下的文章

Windows批处理脚本获取前一天日期

Windows批处理获取日期时间还是稍有点复杂,以下脚本为记录获取前一天的日期:

@echo off
rem 获取昨天日期
set YE=%date:~0,4%
set MO=%date:~5,2%
set DA=%date:~8,2%
set DG=1
set/a vY1=%YE% %% 400
set/a vY2=%YE% %% 4
set/a vY3=%YE% %% 100
if %vY1%==0 (set var=true) else (if %vY2%==0 (if %vY3%==0 (set var=false) else (set var=true)) else (set var=false))
set LY=%YE%
set LM=%MO%
if %MO:~0,1%==0 (set MO=%MO:~1,1%)
if %DA:~0,1%==0 (set DA=%DA:~1,1%)
if %DA% GTR %DG% (set/a LD=%DA%-%DG%) else (
if %MO%==1 (set/a LY=%YE%-1) & (set/a LM=12+%MO%-1) & (set/a LD=31+%DA%-%DG%) else (
set/a LM=%MO%-1
if %MO%==3 (if %var%==false (set/a LD=28+%DA%-%DG%) else (set/a LD=29+%DA%-%DG%))
for %%a in (2 4 6 8 9 11) do (if "%MO%"=="%%a" (set/a LD=31+%DA%-%DG%))
for %%b in (5 7 8 10 12) do (if "%MO%"=="%%b" (set/a LD=30+%DA%-%DG%))))
if %LM% LSS 10 set LM=0%LM:~-1%
if %LD% LSS 10 set LD=0%LD:~-1%
set Han=
set Han=%LY%%LM%%LD%
echo 昨天的日期为:%Han%
pause

使用SQL查看SQLServer数据库还原进度

在做数据库备份还原的时候,忘记添加stats关键字了,Messages窗口什么也没有提示。这种情况下,该如何去监控我的备份或者还原数据库进度呢? 其实,这种情况也无需紧张,我们同样有办法来监控数据库备份还原的进度,方法是使用动态管理视图sys.dm_exec_requests配合一些关键信息字段来监控进度。方法如下:

USE master
GO

SELECT 
    req.session_id, 
    database_name = db_name(req.database_id),
    req.status,
    req.blocking_session_id, 
    req.command,
    [sql_text] = Substring(txt.TEXT, (req.statement_start_offset / 2) + 1, (
                (
                    CASE req.statement_end_offset
                        WHEN - 1 THEN Datalength(txt.TEXT)
                        ELSE req.statement_end_offset
                    END - req.statement_start_offset
                    ) / 2
                ) + 1),
    req.percent_complete,
    req.start_time,
    cpu_time_sec = req.cpu_time / 1000,
    granted_query_memory_mb = CONVERT(NUMERIC(8, 2), req.granted_query_memory / 128.),
    req.reads,
    req.logical_reads,
    req.writes,
    eta_completion_time = DATEADD(ms, req.[estimated_completion_time], GETDATE()),
    elapsed_min = CONVERT(NUMERIC(6, 2), req.[total_elapsed_time] / 1000.0 / 60.0),
    remaning_eta_min = CONVERT(NUMERIC(6, 2), req.[estimated_completion_time] / 1000.0 / 60.0),
    eta_hours = CONVERT(NUMERIC(6, 2), req.[estimated_completion_time] / 1000.0 / 60.0/ 60.0),
    wait_type,
    wait_time_sec = wait_time/1000, 
    wait_resource
FROM sys.dm_exec_requests as req WITH(NOLOCK)
    CROSS APPLY sys.dm_exec_sql_text(req.sql_handle) as txt 
WHERE req.session_id>50
    AND command IN ('BACKUP DATABASE', 'BACKUP LOG', 'RESTORE DATABASE', 'RESTORE LOG')

执行以后会显示备份还原进度,
a26dd79b1a9e1b048a8d4e492e31ba36.png
结果中有非常多重要的字段信息,比如:


Command: 表示命令种类,此处表示备份数据库命令

sql_text: 语句详细信息,此处展示了完整的T-SQL语句

percent_complete: 进度完成百分比,此处已经完成了59.67%

start_time:进程开始执行时间

eta_completion_time:进程预计结束时间

等等。这种方法除了可以监控数据库备份还原进度外,还可以获取更多的进程信息,是比较推荐的方法。

提示: 这种方法不仅仅是可以用来监控你的备份还原进程,任何其他的用户进程都可以使用类似的方法来监控,你只需要把WHERE语句稍作修改即可。比如:想要监控某一个进程的进度情况,你只需要把WHERE语句修改为WHERE req.session_id=xxx即可。
VIA:http://mysql.taobao.org/monthly/2018/04/06/

SQL Server 2008R2 占用80端口问题解决

SQL Server 2008R2安装完以后默认会启用ReportServer服务,服务默认启用的时候会占用80端口,解决方法如下:
打开:控制面板系统和安全管理工具服务,将SQL Server Reporting Services服务停止掉,80端口即可释放,如下图:
report.png

然后启用WEB服务(Nginx或Apache),启动成功后,再启用SQL Server Reporting Services服务,即可,SQLServer会重新分配端口。

SecureCRT设置超时不自动断开

SecureCRT连接时经常会遇到因长时间没有与服务器交互而连接断开的问题,调整下Session Options中的配置即可不会断开:
设置步骤如下: Options->Session Options->Terminal->Anti-idle->勾选Send protocol NO-OP :
Send string: n every 300 seconds

在选项后面有个时间的配置,默认是60秒,可改为其他合适时间,只要小于自动断开连接的时限就可以了。
seesion.png

SQL Server 2014 创建只读用户

SQLServer系列创建用户基本相似,此处以2014版本为例,创建bpm_r用户为只读用户,仅可读取H3Cloud数据库权限,操作方法如下:
1、打开【Microsoft SQLServer Management Studio】,用管理员账户登录。
2、找到【安全性】,打开,可以看到【登录名】,在上面右键,选择【新建登录名】。
3、在【常规】选项中,输入登录名,选择身份验证方式。这里我选用了【SQL Server 身份验证】同时,勾掉【强制实施密码策略】,输入账号、密码等信息,如下图:
1.png
4、在右侧的【用户映射】选项卡中,【映射到此登录名的用户】选择该用户可以操作的数据库。针对每一个数据库,在下方【数据库角色成员身份】中,选择【db_datareader】和【public】
如下图:
2.png
确定后即可使用bpm_r用户登录数据库,数据库上最好做下IP策略设置;

AWS镜像AMI制作

先在本地安装Oracle VM VirtualBox,安装好虚拟机(调整优化系统各个参数)此处不再赘述,IP设置为自动获取,最后关机导出,格式为“开放式虚拟化格式 1.0”,如下图,导出完以后上传到S3存储上;

---阅读剩余部分---

修改注册表解决Windows 2008 R2 系统默认80端口被系统占用

安装好Windows2008R2企业版以后,默认80端口被占用,检查方法如下:

netstat -ano | findstr :80

80.png

任务管理器查看进 pid 为4
 映像名称   pid  描述
 system    4    NT kernel&System

4.png
修改注册表解决:

regedit
 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP'右边有一个'start'的DWORD的值将'3'改为'4'

regedit.png
最后重启即可。

CentOS安装VMware Tools

vmtools有以下功能:

正常执行虚拟机的电源操作。
在执行各种电源操作期间在客户机操作系统中运行 VMware 提供的脚本或用户配置的脚本。
在客户机操作系统中运行应用程序、命令和文件系统操作,以增强客户机自动化。
针对客户机用户操作进行身份验证。
定期从客户机收集网络、磁盘和内存使用情况信息。
生成从客户机操作系统到主机的检测信号,以便 VMware High Availability 可以确定客户机操作系统的可用性。
在客户机操作系统与主机或客户端桌面之间同步时钟。
使客户机文件系统进入静默状态,以便主机可以捕获与文件系统一致的客户机快照。
在使客户机文件系统进入静默状态时,运行 pre-freeze-script.bat 和 post-thaw-script.bat。
打开虚拟机电源后立即自定义客户机操作系统。
在 VMware Workstation 和 VMware Fusion 上,在主机文件系统与客户机文件系统之间启用“共享文件夹”。
支持在客户机操作系统与主机或客户端桌面之间复制和粘贴文本、图形和文件。
没有安装vmtools的虚拟机,通过vsphere client查看虚拟机信息时,是看不到虚拟机IP地址与hostname.

VMware Tools安装步骤:
1、登录vsphere控制台在要安装的虚机上,更改配置,将光驱设置为客户端设备。
1.png
2、右键客户机操作系统--安装VMware Tools
3、ssh登陆要安装的虚机,挂载vmtools镜像

mkdir /root/cdrom
mount /dev/cdrom /root/cdrom

4、解压

cd /root/cdrom
tar zvxf VMwareTools-10.2.1-8267844.tar.gz -C /root/

5、开始安装:

yum install perl -y  #安装perl包
cd /root/cdrom/VMwareTools
./vmware-install.pl 
# 询问是否继续安装,默认为否
open-vm-tools packages are available from the OS vendor and VMware recommends 
using open-vm-tools packages. See http://kb.vmware.com/kb/2073803 for more 
information.
Do you still want to proceed with this installation? [no] yes
 
# 安装路径,默认即可
Creating a new VMware Tools installer database using the tar4 format.
 
Installing VMware Tools.
 
In which directory do you want to install the binary files? 
[/usr/bin] 
 
# 自动启动文件路径,默认即可
What is the directory that contains the init directories (rc0.d/ to rc6.d/)? 
[/etc/rc.d] 
 
# init文件夹路径,默认即可
What is the directory that contains the init scripts? 
[/etc/rc.d/init.d] 
 
# sbin文件夹路径,默认即可
In which directory do you want to install the daemon files? 
[/usr/sbin] 
 
# vmware-tools库目录路径,默认即可
In which directory do you want to install the library files? 
[/usr/lib/vmware-tools] 
 
# vmware-tools库目录不存在,需要创建,默认即可
The path "/usr/lib/vmware-tools" does not exist currently. This program is 
going to create it, including needed parent directories. Is this what you want?
[yes] 
 
# agent library文件夹路径,默认即可
In which directory do you want to install the common agent library files? 
[/usr/lib] 
 
# agent transient文件夹路径,默认即可
In which directory do you want to install the common agent transient files? 
[/var/lib] 
 
# 帮助文档路径,默认即可
In which directory do you want to install the documentation files? 
[/usr/share/doc/vmware-tools] 
 
# 帮助文档文件夹并不存在,需要创建,默认即可
The path "/usr/share/doc/vmware-tools" does not exist currently. This program 
is going to create it, including needed parent directories. Is this what you 
want? [yes] 
 
# 执行configure脚本,默认即可
Before running VMware Tools for the first time, you need to configure it by 
invoking the following command: "/usr/bin/vmware-config-tools.pl". Do you want 
this program to invoke the command for you now? [yes] 
 
# 是否启用文件文件夹共享,esxi环境无法使用,默认即可
The VMware Host-Guest Filesystem allows for shared folders between the host OS 
and the guest OS in a Fusion or Workstation virtual environment.  Do you wish 
to enable this feature? [no] 
 
# vmblock,不支持esxi环境,默认即可
The vmblock enables dragging or copying files between host and guest in a 
Fusion or Workstation virtual environment.  Do you wish to enable this feature?
[no] 
 
# 是否启用VMware automatic kernel modules,默认即可
Would you like to enable VMware automatic kernel modules?
[yes] 
 
# 是否启用vgauth,默认即可
Do you want to enable Guest Authentication (vgauth)? Enabling vgauth is needed 
if you want to enable Common Agent (caf). [yes] 
 
# 是否启用Common Agent,默认即可
Do you want to enable Common Agent (caf)? [no] 
No X install found.

开始安装:

Creating a new initrd boot image for the kernel.
Generating the key and certificate files.
Successfully generated the key and certificate files.
manageSELinux install: The 'semanage' utility was not found.
There was an error configuring the SELinux security context for VMware Tools.  
Please make certain that SELinux is configured correctly.
 
The configuration of VMware Tools 10.2.1 build-8267844 for Linux for this 
running kernel completed successfully.
 
You must restart your X session before any mouse or graphics changes take 
effect.
 
To enable advanced X features (e.g., guest resolution fit, drag and drop, and 
file and text copy/paste), you will need to do one (or more) of the following:
1. Manually start /usr/bin/vmware-user
2. Log out and log back into your desktop session
3. Restart your X session.
 
Enjoy,
 
--the VMware team
 
Found VMware Tools CDROM mounted at /root/cdrom. Ejecting device /dev/sr0 ...

安装完成后会自动卸载cdrom.
6、删除安装包:

rm /root/cdrom /root/VMwareTools -rf

7、查看vmtools服务状态:

systemctl status vmware-tools

参考文档:
https://www.vmware.com/files/cn/pdf/vmware-tools-installation-configuration.pdf
https://ngx.hk/2018/08/22/vmware-tools%E7%AE%80%E4%BB%8B%E4%B8%8E%E5%AE%89%E8%A3%85.html

Windows修改端口连接数范围及快速释放time_wait

查看当前端口范围:(win10/win2008/win2012默认是一致的)

C:\Users\Administrator>netsh int ipv4 show dynamicportrange tcp

协议 tcp 动态端口范围
---------------------------------
启动端口        : 49152
端口数          : 16384

C:\Users\Administrator>netsh int ipv4 show dynamicportrange udp

协议 udp 动态端口范围
---------------------------------
启动端口        : 49152
端口数          : 16384

C:\Users\Administrator>netsh int ipv6 show dynamicport tcp

协议 tcp 动态端口范围
---------------------------------
启动端口        : 49152
端口数          : 16384

C:\Users\Administrator>netsh int ipv6 show dynamicport udp

协议 udp 动态端口范围
---------------------------------
启动端口        : 49152
端口数          : 16384

调整此范围:
netsh int < ipv4 | ipv6 > 设置动态 < tcp | udp > 开始数数 = =范围

netsh int ipv4 set dynamicport tcp start=2000 num=63000
netsh int ipv4 set dynamicport udp start=2000 num=63000
netsh int ipv6 set dynamicport tcp start=2000 num=63000
netsh int ipv6 set dynamicport udp start=2000 num=63000

time_wait超时时间调整

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
“MaxUserPort”=dword:0000fffe
“TcpTimeWaitDelay”=dword:0000005 (缩短为5秒)

重启生效。
via: https://support.microsoft.com/zh-cn/help/929851/the-default-dynamic-port-range-for-tcp-ip-has-changed-in-windows-vista
http://www.361way.com/win-dynamic-port-timewait/5255.html

SQL Server2008R2日志文件过大 大日志文件清理方法 不分离数据库

SQL Server日志文件过大    大日志文件清理方法 ,网上提供了很多分离数据库——〉删除日志文件-〉附加数据库 的方法,此方法风险太大,过程也比较久,有时候也会出现分离不成功的现象。下面的方式是不需要做数据库分离和附加操作的。

SQL 2008收缩清空日志方法:

1.在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完整模式,一定必务要再改回完整模式,不然数据库就不支持时间点备份了。
1).选择数据库–属性—选项—恢复模式–选择简单。
2).收缩数据库后,再调回完整。
2.可以用命令直接操作

USE [master]
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE      --简单模式
GO
USE 要清理的数据库名称
GO
DBCC SHRINKFILE (N'要清理的数据库名称_log' , 2, TRUNCATEONLY)  --设置压缩后的日志大小为2M,可以自行指定
GO
USE [master]
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL   --还原为完全模式
GO

OneDrive 一直显示"正在处理更改"的解决方法

OneDrive 一直显示"正在处理更改",能打开OneDrive网站查看,确认网络正常没被墙,解决方法如下:

1. 按下 Windows 按键 + R ,

2. 在弹出的运行/ Run视窗输入:%localappdata%\Microsoft\OneDrive\onedrive.exe /reset

3. 然后请点击OK (桌面右下角的OneDrive系统小图标将消失并在大约1-2分钟后再次出现)

4. 若桌面右下角的OneDrive系统小图标在数分钟后并没有再次出现,请再运行/ Run视窗并输入:%localappdata%\Microsoft\OneDrive\onedrive.exe

5.操作完成之后,再查看。

via:https://answers.microsoft.com/zh-hans/windows/forum/windows_10-files/onedrive/83687705-a43e-4b79-8db2-bed56abfbadf

WINDOWS SERVER 2008/R2/2012最大内存支持及版本升级方法

Windows Server 2008 最大内存限制:

Windows Server 2008 x86
Windows Server 2008 标准版,支持最大 4GB 内存
Windows Server 2008 企业版,支持最大 64GB 内存
Windows Server 2008 数据中心版,支持最大 64GB 内存

Windows Server 2008 x64 with 或 without Hyper-V Role Enable
Windows Server 2008 标准版,支持最大 32GB 内存
Windows Server 2008 企业版,支持最大 1TB 内存
Windows Server 2008 数据中心版,支持最大 1TB 内存

Windows Server2008 R2 最大内存限制:
Windows Server 2008 R2 with Hyper-V Role Enable
Windows Server 2008 R2 标准版,最大支持 32GB 内存
Windows Server 2008 R2 企业版,最大支持 1TB 内存
Windows Server 2008 R2 数据中心版,最大支持 1TB 内存
Windows Server 2008 R2 without Hyper-V Role Enable
Windows Server 2008 R2 标准版,最大支持 32GB 内存
Windows Server 2008 R2 企业版,最大支持 2TB 内存
Windows Server 2008 R2 数据中心版,最大支持 2TB 内存

Windows Server 2012 Standard
Windows Server 2012 Datacenter

Windows Server 2012支持以下最大的硬件规格
64个物理处理器
640个逻辑处理器(关闭Hyper-V,打开就支持320个)
4TB内存

2008R2标准版操作系统升级到企业版。不想重装系统只能用升级命令是DISM.exe。需在线升级。

升级步骤:  

第一步:停用此台服务器上所有正在运行的应用程序,把应用程序服务由自动改为手动 。 

第二步:获取当前操作系统版本信息,dism /online /Get-CurrentEdition

第三步:检查当前操作系统可升级的版本  dism/online /Get-TargetEditions

第四步:输入操作系统升级命令,目标版本和序列号。安装完成后第1次重启系统  

dism /online /Set-Edition:ServerEnterprise/productkey:XXXXX XXXXX - XXXXX - XXXXX - XXXXX

第一个参数是edition ID, 也就是第二步中查询到的目标版本; 第二个参数是ProductKey,25个字符的目标系统版本的产品密钥。

第五步:系统重新启后进行版本升级的系统配置,当配置完成后第2次重启系统。

第六步:第2次重启完成后,登录操作检查操作系统的版本、系统激活状态。

如果开始出现了一次语法错误报87,又出现了产品密钥不符报1605,总之这个密钥一定要对。待到成功后会提示重启,一共是两次重启吧,最终Windows Server 2008 R2 标准版升级到企业版大功告成,系统登陆时就能看到的。

JS实现页面打印

方式一:window.print()
整体打印

<a href="javascrīpt:window.print()" target="_self">打印</a>

现在就轻松实现了页面的打印,但是这种方式会将整个页面打印,如果想要实现指定区域的打印需要通过下面的设置
局部打印
首先,在html中,通过star和end来标记打印区域

<h1>这块内容不需要打印</h1>
<!--startprint-->
<div class="content">
    这里是需要打印的内容
        .....
</div>
<!--endprint-->
<h1>这块内容不需要打印</h1>

然后,在点击事件中添加如下代码

function doPrint() {      
        bdhtml=window.document.body.innerHTML;      
        sprnstr="<!--startprint-->";      
        eprnstr="<!--endprint-->";      
        prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);      
        prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));      
        window.document.body.innerHTML=prnhtml;   
        window.print();      
}

过滤打印区域的内容
例如

<!--startprint-->
<div class="content">
    <button class="noprint">预览</button>
    <button class="noprint">打印</button>
      这里是需要打印的内容
        .....
    </div>
<!--endprint-->

上面的预览和打印按钮不希望打印,如果要过滤的话可以做下面的样式设置

        <style type="text/css">
            @media print {
                .noprint{
                    display: none;
                }
            }
        </style>
or

        <style type="text/css" media="print">
            .noprint{
                display: none;
            }
        </style>

两种写法任选其一

分页打印
使用 window.print() 打印时,如果内容超出会自动分页。但是我们如果需要自定义分页范围,如碰到表格分页打印,可以进行如下设置:

<table width="100%"  border="0" cellpadding="0" cellspacing="0"  style="page-break-after:always" > 
</table>

方式二、jqprint()
jqprint是一个基于jQuery编写的页面打印的一个小插件,但是不得不承认这个插件确实很厉害,最近的项目中帮了我的大忙,在Web打印的方面,前端的打印基本是靠window.print()的方式进行打印的,而这个插件在其基础上进行了进一步的封装,可以轻松实现打印网页上的某个区域,这是个亮点。

请注意!很多朋友遇到 Cannot read property 'opera' of undefined 错误问题是juqery版本兼容问题
解决方法:加入迁移辅助插件 jquery-migrate-1.0.0.js可解决版本问题

引入

<script language="javascript" src="jquery-1.4.4.min.js"></script>
<script language="javascript" src="jquery.jqprint-0.3.js"></script>
<script language="javascript">
function  a(){
        $("#ddd").jqprint();
    }
</script>
<div id="ddd">
    <table>
        <tr>
            <td>test</td>
            <td>test</td>
            <td>test</td>
            <td>test</td>
            <td>test</td>
        </tr>
    </table>
</div>
<input type="button" onclick=" a()" value="打印"/>

设置模板打印

$("#printContainer").jqprint({
     debug: false, //如果是true则可以显示iframe查看效果(iframe默认高和宽都很小,可以再源码中调大),默认是false
     importCSS: true, //true表示引进原来的页面的css,默认是true。(如果是true,先会找$("link[media=print]"),若没有会去找$("link")中的css文件)
     printContainer: true, //表示如果原来选择的对象必须被纳入打印(注意:设置为false可能会打破你的CSS规则)。
     operaSupport: true//表示如果插件也必须支持歌opera浏览器,在这种情况下,它提供了建立一个临时的打印选项卡。默认是true
});

附言
另外还可以使用html 标签<object>引入Webbrowser控件(只兼容IE)或者调用windows底层打印,报安全警告,不建议使用(不支持局部打印)
用户在打印网页的时候,页面上会出现网页的名字,页码,链接地址和打印时间,如果用户不需要这些信息,则需要设置用户的网页设置:
具体如下:文件-》页面设置-》将页眉页脚中的代码删除即可。打印出来的文档没有页码信息和链接地址信息
附件为用到的js文件下载。
jquery.jqprint-0.3.js
jquery-2.1.4.min.js
jquery-migrate-1.2.1.min.js

javascripts.zip

关闭win10中IPV6隧道

在cmd命令提示符上点右键,以管理员运行,使用以下3条命令把IPv6的接口关闭即可:

netsh interface teredo set state disable

netsh interface 6to4 set state disabled

netsh interface isatap set state disabled

想要还原IPv6隧道则用以下命令:

netsh interface teredo set state default

netsh interface 6to4 set state default

netsh interface isatap set state default

也可以在网络连接中去掉IPV6的选项,如下图,并重启电脑:
ipv6.png

使用taskkill强制结束进程

在windows系统中有时候会进程卡住、僵死、死锁等用任务管理器无法结束掉程序或进程,可以使用taskkill命令强制结束:
taskkill 命令示例用法:
例如:

    TASKKILL /F /IM cmd.exe /T
    TASKKILL /PID 1000 /T /F
    TASKKILL /IM notepad.exe
    TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
    TASKKILL /F /IM cmd.exe /T
    TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
    TASKKILL /F /FI "USERNAME eq NT AUTHORITYSYSTEM" /IM notepad.exe
    TASKKILL /S system /U domainusername /FI "USERNAME ne NT*" /IM *
    TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"
Taskkill /?运行结果:
TASKKILL [/S system [/U username [/P [password]]]]
         { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]

描述:

使用该工具按照进程 ID (PID) 或映像名称终止任务。
参数列表:
/S        system               指定要连接到的远程系统。
/U       [domain]user     指定应该在哪个用户上下文执行这个命令。
/P        [password]        为提供的用户上下文指定密码。如果忽略,提示输入。
/FI       filter                   应用筛选器以选择一组任务。允许使用 "*"。例如,映像名称 eq acme*
/PID    processid           指定要终止的进程的 PID。使用 TaskList 取得 PID。
/IM     imagename        指定要终止的进程的映像名称。通配符 '*'可用来指定所有任务或映像名称。
/T                                  终止指定的进程和由它启用的子进程。
/F                                  指定强制终止进程。
/?                                  显示帮助消息。

Apache中 Win32DisableAcceptEx 与MaxRequestsPerChild及参数设置

win系统下apache环境,mpm_winnt.c模式,优化参数:
ThreadsPerChild 说明:每个子进程建立的线程数,默认值:64,最大值:1920。网上查询资料建议设置在100-500之间。如服务器性能高,可设置更大值。
MaxRequestsPerChild 说明:每个子进程在其生存期内允许伺服的最大请求数量,也就是最大线程。如果超过限制,子进程会结束。默认值:0。
推荐MaxRequestsPerChild不要设置为0,设置为非0,可以保护Apache进程免遭内存泄漏的影响,因为你不知道运行在Apache上的应用程式在什么时候会出错导致内存泄漏。

线程设置也不是越大越好,太大会导致产生新的子进程后长期空闲,并非最佳优化。要根据服务器的硬件配置、系统环境、访问流量等调试设置。
如果值太小,也会造成apache频繁重启性能降低,在日志中会出现这样的提示:

Process exiting because it reached MaxRequestsPerChild. Signaling the parent

Win32DisableAcceptEx
使用accept()代替AcceptEx()接受网络链接。AcceptEx()是一个微软的WinSock2 API ,通过使用BSD风格的accept() API提供了性能改善。一些流行的Windows产品,比如防病毒软件或虚拟专用网络软件,会干扰AcceptEx()的正确操作。
如果apache的error.log里面有类似报错,

[warn] (OS 64)指定的网络名不再可用。  : winnt_accept: Asynchronous AcceptEx failed.

可以直接禁用AcceptEx,重启 Apache

<IfModule mpm_winnt.c>
  Win32DisableAcceptEx
  ......
</IfModule>

设置SQL Server最大内存使用量

SQLServer2008版本默认安装以后内存最大使用量为2147483647,基本会把系统内存耗尽,查看当前内存使用情况:

SELECT 
  physical_memory_in_use_kb/1024 AS sql_physical_memory_in_use_MB, 
    large_page_allocations_kb/1024 AS sql_large_page_allocations_MB, 
    locked_page_allocations_kb/1024 AS sql_locked_page_allocations_MB,
    virtual_address_space_reserved_kb/1024 AS sql_VAS_reserved_MB, 
    virtual_address_space_committed_kb/1024 AS sql_VAS_committed_MB, 
    virtual_address_space_available_kb/1024 AS sql_VAS_available_MB,
    page_fault_count AS sql_page_fault_count,
    memory_utilization_percentage AS sql_memory_utilization_percentage, 
    process_physical_memory_low AS sql_process_physical_memory_low, 
    process_virtual_memory_low AS sql_process_virtual_memory_low
FROM sys.dm_os_process_memory;  

SQL.png
设置当前最大内存使用量为16G

sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE;  
GO  
sp_configure 'max server memory', 16384;  
GO  
RECONFIGURE;  
GO

直接在SQL查询器里面执行即可,一般根据系统内存大小设置,至少保留2--3G内存给操作系统使用;
参考:https://docs.microsoft.com/zh-cn/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-2017
也可以在登陆SQLServer以后,右键服务器属性--内存,选择使用AWE分配内存、最小服务器内存、最大服务器内存等参数,如下图,最后确定即可;
memery.png

SVN数据迁移Linux到Windows机器

VN版本信息:
Linux: Subversion版本 1.6.11 (r934486)

Windows : VisualSVN Server Manager 2.7.6

使用工具
Putyy
WinScp

1.从Linux系统备份仓库

使用Putty连接到Linux,进入到SVN仓库目录,

执行命令进行备份:

svnadmin dump /home/subversion/repos > svnback20141114
/home/subversion/repos 要备份的仓库
svnback20141114 备份文件名

备份过程需要等待一会。

2.将仓库备份导入到Windows
备份完成以后使用WinScp将备份文件(svnback20141114)拷贝到Windows中。
打开cmd,进入仓库目录
执行命令创建新仓库:

svnadmin create 200SVN

执行命令将备份导入新仓库:
svnadmin load 200SVN < c:\svnback20141114

200SVN 导入的仓库名

c:ssvnback20141114 备份文件
漫长的等待后迁移完毕!
一般或者说大部分都是Windows到Linux,但是也有部分奇葩,是从L到W;
VIA: https://my.oschina.net/calvin6/blog/344693

sublime2/3 安装package control

sublimetext官网地址https://www.sublimetext.com,下载安装后启动,默认没有安装Package Control即包管理器,安装步骤如下:
直接按Ctrl+` 键,在控制台输入:如下代码,回车,会自动安装Package Control
sublimetext2:

import urllib2,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0ef93d5f746d80ef60'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler()) ); by = urllib2.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); open( os.path.join( ipp, pf), 'wb' ).write(by) if dh == h else None; print('Error validating download (got %s instead of %s), please try manual install' % (dh, h) if dh != h else 'Please restart Sublime Text to finish installation')

sublimetext3:

import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0ef93d5f746d80ef60'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)

如果安装失败,可以用下面这个方法:
下载这个文件

https://packagecontrol.io/Package%20Control.sublime-package

将下载回来的文件重命名为 Installed Packages
复制文件到Sublime的插件目录
一般目录地址为

C:\Users\username\AppData\Roaming\Sublime Text 3\Packages

最后重启Sublime即可;

最新

分类

归档

评论

其它