前言

好久没更新技术文章了,如果细算的话,或许可能大概已经有半年之久了。。

一方面是身体原因导致现在精力大不如以前了,这个很多关注我的老读者应该都知道,我就不一直拿这个说事了,说多了总感觉自己太矫情。

另一方面应该也是自己懒散习惯了,就不想再费力写一些文章了,不过我也不想为自己的懒惰做开脱,实事求是就是了。

写过文章的作者应该深有体会,写一篇文章真的要耗费非常久的时间和精力。可能业余时间和周末都会被写文章所占领。

我曾经写过一篇文章,用下班的业余时间写的,可能你想象不到我用了多久才写出来。断断续续写了差不多一个星期才完事,我想再慢的作者应该也没有我这么笨了。

但是,为什么我现在又开始写了呢?

主要是最近查资料,发现我的csdn一直都有人在关注我,评论我。没想到这篇 HashMap 在 csdn 阅读量已经破万了。

导致我内心有非常大的愧疚感,愧疚这么久了不更新,竟然还有人关注我,点赞支持我。愧疚大家都在为了学习奋力拼搏,而我却止步不前。

所以我痛定思痛,决定重新规划我的写文章计划。(不立 flag,怕倒。。)

电脑如何双开微信

写下这篇文章,是因为我发现之前用的 mac 上的双开微信软件报风险了,就不敢再用了。但是,很多人像我一样又有双开微信的需求的,那么怎样才能双开甚至多开微信呢?

下面就介绍一种朴实无华,不用任何插件和软件的方式实现你的需求。

windows系统双开微信方法

可能很多人是在 windows 系统上运行微信的,那么首先说一下 win 上怎么双开微信。

其实主要是通过 start 命令来开启一个新的程序,我们先看一下 start 的语法。

在终端输入命令:start /? 可以打开 start 的帮助文档。

上图说的已经很清楚了,我就不再赘述了。对于我们来说,主要关注微信的安装包路径。例如我的在 D盘,完整路径为:D:\Program Files (x86)\Tencent\WeChat\Wechat.exe

我们试一下,直接运行 start D:\Program Files (x86)\Tencent\WeChat\Wechat.exe

却发现提示,找不到相对应的文件。

仔细看就会发现,提示的是找不到文件 D:\Program。发现了点什么没有,很明显,系统识别不了空格,以为我访问的是路径是 D:\Program,直接把空格后边的截断了,所以报错。

因此,对于路径中有空格的,我们需要加引号来处理。

再次运行 start "D:\Program Files (x86)\Tencent\WeChat\Wechat.exe"

会发现,启动了一个新窗口,但还是启动不了微信。

此时,只需要在路径前面加上空白双引号"",表示创建一个空白的窗口,来指向我们要打开的程序。

完整命令为 start "" "D:\Program Files (x86)\Tencent\WeChat\Wechat.exe",成功打开微信。

注意:执行命令时,需要微信是未打开的状态,如果已经打开一个微信了,则不会生效。

因此,如果我们需要双开微信的话,就需要写一个批处理脚本,一次运行多个程序,这样就不会出现命令失效的问题。

新建一个文件,名字随便起,例如我起的就是“微信多开”。然后,后缀名改为.bat格式。

用记事本或者 notepad++ 等编辑工具打开,输入上边的命令两行,即代表打开两个微信客户端。

start "" "D:\Program Files (x86)\Tencent\WeChat\Wechat.exe"
start "" "D:\Program Files (x86)\Tencent\WeChat\Wechat.exe"

输入多行,则代表同时打开多个微信。保存,退出。

然后直接双击运行 .bat 文件,即可。

mac系统双开微信方法

再来说下 mac 系统下怎么双开微信。其实,也是通过命令的方式,只不过是用 linux 命令来实现(mac 也是类unix系统,因此和 linux 命令类似)。

如果没有耐心看下去的话,直接运行以下命令即可多打开一个微信客户端。

nohup /Applications/WeChat.app/Contents/MacOS/WeChat > /dev/null 2>&1 &

但是,作为技术人员,还是多了解一些 linux 知识比较好(虽然比较基础。。)

输出重定向

在 linux 中,标准的输入设备默认就是指键盘,标准的输出设备默认就是指显示器,对于命令行来说就是输出在终端上。

重定向顾名思义,

  • 输入重定向就是把输入从键盘重定向到其他设备。
  • 输出重定向就是把输出从显示器重定向到其他设备(一般重定向到文件)。

这里需要说明一下,输入只有标准输入(stdin),而输出分为标准输出(stdout)和标准错误输出(stderr)。std 是标准的英语单词 standard 缩写。

在 linux 下,认为一切皆为文件。这里的文件不仅指普通意义上的文件,还包括目录,进程(/proc),设备(/dev),套接字等。

而每个文件都有一个文件描述符,值是一个非负整数(>=0)。

所以,输入输出也有对应的文件描述符(file descriptor,会发现很多地方都把文件描述符简写为fd)。

输入输出设备 文件描述符
标准输入 0
标准输出 1
标准错误输出 2

输入重定向的命令符号为 <,输出重定向的命令符号为 >

例如 echo hello 1> file 即是代表,本来要打印 hello 字符串到标准输出设备(终端上),但是 1> file把它的输出结果重定向到了 file 文件中。最终会发现 file 文件中会多了一行“hello”字符。

ps:通常,标准输出重定向 1> ,也可以省略掉文件描述符1,简写为 >。注意文件描述符和重定向符号之间是没有空格的。

/dev/null 被称为空设备,是一个特殊的设备文件。所有写入其中的数据都会被丢弃,也就是我们通常说的“黑洞”,吞噬一切。

所以, /Applications/WeChat.app/Contents/MacOS/WeChat > /dev/null 这句话的意思就是把命令执行后的标准输出重定向到空设备文件中,也就是在终端不显示任何标准输出消息。

2>&1,中 &表示等同的意思,2>&1 就表示 2 的输出重定向等同于 1 。也就是标准错误输出重定向等同于标准输出重定向。

所以 > /dev/null 2>&1 就代表,标准错误输出等同于标准输出,都重定向到空设备文件。就算命令运行报错,也不会在终端输出任何错误信息。因此,当我们的程序运行不需要输出任何信息(包括报错信息)的时候,通常使用这个命令。

nohup 和 & 命令

首先要明确这是两个命令,它们代表不同的含义,产生不一样的效果。

nohup 全称是 no hang up ,意思是不挂断。 & 是指后台运行。

为了测试他们的不同,我们以一段 Java 代码为例。(每隔一秒打印一下当前系统时间)

import java.text.SimpleDateFormat;
import java.util.Date;public class TestRun {public static void main(String[] args) throws InterruptedException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");while(true){System.out.println("当前时间:" + sdf.format(new Date()));Thread.sleep(1000);}}
}

保存文件为 TestRun.java ,然后 javac TestRun.java 编译为 class 文件。

我们在终端直接输入 java TestRun 来运行程序。会发现,程序正常执行,每隔一秒输出一下当前系统时间。

此时按下 ctrl + c 键发送 SIGINT 信号,程序接收到信号之后就会直接停止,不再输出任何东西到控制台。

这是因为,我们运行的方式默认是前台运行的。

如果以后台方式运行,会有什么效果呢?

在终端输入 java TestRun & ,会先在终端显示程序的进程号 3120 。

然后同样按下 ctrl + c 发送 SIGINT 信号,会发现程序并没有停止,而是继续运行。

我们可以在终端打开另外一个窗口,输入 ps aux|grep TestRun 来验证是否程序真的在继续运行.

如上图,进程 3120 确实还在运行中。

此时,关闭第一个会话窗口(sesson),给程序发送 SIGHUP 信号会怎样呢?

再次 ps 查看,会发现原先的进程 3120 也停止了。

如果以 nohup 方式运行,会有什么效果呢?

在终端输入命令 nohup java TestRun

会有一段提示 “appending output to nohup.out”,终端也没有任何程序的输出信息。

我们先不管这个 nohup.out 是什么,稍等再说。

另外打开一个窗口,ps 查看一下此时的进程号,为 3256 。

同样的先按下 ctrl + c 发送 SIGINT 信号给程序,

会发现,程序响应后停止运行了。也可以手动 ps 验证一下,

进程号 3256 确实被停止了。

再次运行 nohup java TestRun,来验证关闭 session 会怎样。ps 查看进程号为 3386 。

然后把第一个 session 关闭,发送 SIGHUP 信号,会发现进程号 3386 依旧在。

我们再看下,nohup.out 是什么鬼?

其实 nohup 会默认(在非重定向时)在当前目录下,输出一个 nohup.out 文件。程序的输出都保存在 nohup.out 文件中。

至此,我们明白了他们之间的区别:

  • & 是以后台的方式运行程序,结果输出到终端。程序响应 SIGHUP 信号,而不响应 SIGINT 信号。

  • nohup 是不挂断的方式运行程序,结果默认输出到 nohup.out 文件。程序响应 SIGINT 信号,而不响应 SIGHUP 信号。

因此,我们通常会把 nohup 和 & 结合起来使用,对 SIGINT 和 SIGHUP 信号都不响应。这样程序就只能通过 kill 来关闭了。

实际上,nohup 的完整语法如下,

nohup Command [ Arg … ] [ & ]

  • command 为要执行的命令,例如上边的 java TestRun
  • Arg 为可选项,可以输出重定向(到文件),默认不写的话就会在当前目录生成一个 nohup.out 文件来保存输出内容
  • & 为可选项,表示后台运行。

所以,如果要打开一个新的微信客户端,并且让它后台运行,不响应任何信号。同时,不在终端显示任何输出信息,结合上边的输出重定向到文件,就可以这样写,

nohup /Applications/WeChat.app/Contents/MacOS/WeChat > /dev/null 2>&1 &

  • nohup 和 结尾的 & 同时使用,保证程序不会被挂断和关闭。
  • /Applications/WeChat.app/Contents/MacOS/WeChat ,用来启动微信客户端的命令。mac 下大家微信的安装目录都是这个。
  • > /dev/null 2>&1 & 表示标准输出和标准错误输出都重定向到空设备文件,即不显示。

双开微信脚本

最后,我们可以编写一个 shell 脚本来双开微信,在任意目录(我在当前登录用户的桌面上 ~/Desktop)新建一个 openWechat.sh 。然后输入,

nohup /Applications/WeChat.app/Contents/MacOS/WeChat > /dev/null 2>&1 &
nohup /Applications/WeChat.app/Contents/MacOS/WeChat > /dev/null 2>&1 &

保存,退出。

在当前目录下执行 sh openWechat.sh 即可同时打开两个微信客户端。若需要多开,则多加几行同样的命令。

PS:使用命令的方式,不会对微信软件本身有侵入性,所以也可以放心的使用。慎用第三方软件。

本篇文章由一文多发平台ArtiPub自动发布

如何朴实无华的双开微信?相关推荐

  1. Mac 上怎么双开微信

    Mac 上怎么双开微信?逆向解决太麻烦了,大多数人都不懂编程. 使用 open -n ,直接在终端输入: open -n /Applications/WeChat.app/Contents/MacOS ...

  2. 电脑双开微信的脚本 (Windows系统)

    电脑双开微信的脚本 (Windows系统) @echo off cd C:\Program Files (x86)\Tencent\WeChat\ start WeChat.exe&WeCha ...

  3. 教你在Mac系统下双开微信的方法

    日常使用中在Mac系统下,应该也有很多朋友跟我一样需要双开微信这种需求吧?废话不多说,现在就来教大家如何在Mac系统下双开微信的方法. 操作步骤 在Mac的终端粘贴以下代码,回车就可以了. nohup ...

  4. 干货!无需任何工具,实测macOS双开微信客户端

    iOS 微信不能双开,macOS微信不能双开.想要在网上有两个身份的果粉,只能用两部手机,来回切换人设:自己的自己和公司的自己. iOS上没办法,除了破解越狱这种伤敌八百自损一千的傻办法,必须要双枪. ...

  5. 双开微信三行代码就搞定

    今天我发一个双开软件方法,一般微信只能开一个的,不管是手机还是电脑都是一样的待遇.手机的我暂时只用软件来双开*(有一个软件可以多开,没有广告而且体积小,需要的点击 右侧 下载)* 今天给大家在Wind ...

  6. 微信PC端同时登陆两个或者多个 微信双开 微信多开操作

    有时候PC端同时登陆两个或者多个微信,今天整理了一下操作,希望能帮助到大家. 1.首页找到微信目标位置: 可在微信快捷键上右击-属性-目标位置 比如:"D:\Program Files (x ...

  7. MacBook双开微信

    步骤一:使用微信客户端直接打开第一个微信窗口. 步骤二:打开命令窗口,输入如下命令: nohup /Applications/WeChat.app/Contents/MacOS/WeChat > ...

  8. mac os双开微信方法

    打开终端输入 nohup /Applications/WeChat.app/Contents/MacOS/WeChat > /dev/null 2>&1 一行命令-搞定 这个命令也 ...

  9. MAC双开微信的简便做法

    操作步骤 : 访达-应用程序-微信-双指(右键)-显示包内容-Contens-MacOS-WeChat终端点开运行-再双指选择制作替身-打开替身终端. 具体操作步骤如下:

  10. MacOS上双开微信

    1. 新建文件 wechat_double.sh 2. 复制shell命令: nohup /Applications/WeChat.app/Contents/MacOS/WeChat > /de ...

最新文章

  1. 36 张图梳理 Intellij IDEA 常用设置
  2. page fault in nonpaged area 蓝屏_由于错误的更新,安装Windows 10 KB4549951后蓝屏死机解决办法...
  3. python模块之collections模块
  4. 笔记-高项案例题-2017年上-质量管理
  5. python(numpy,pandas2)——numpy 运算
  6. linux tomcat6 jmx,Zabbix3.2.6之通过JMX监控Tomcat
  7. 哈夫曼编码c语言论文,哈夫曼编码的实现及应用论文.doc
  8. php MySQL定义,PHP + MySQL用户定义函数
  9. Flex 4命名空间
  10. matplotlib——折线图
  11. 使用Spring.Net进行Webservice开发发布遇到的问题
  12. (油菜花)为什么别的项目中的category拖到自己项目中无法使用?
  13. linux下udp调试工具,linux tcp udp 调试工具
  14. stm32_004_stm32f103内部结构图
  15. Mybatis学习教程②
  16. 起底资金盘GGT:一场早有预谋的跑路
  17. C#实现触摸屏自定义键盘
  18. 关于Vue中keep-alive的作用是什么?怎么使用?
  19. 网络容易丢包情况汇总
  20. 基于达尔文进化论的遗传算法,还能帮你破解同事的密码?| 附代码

热门文章

  1. 英伟达服务器系统显卡驱动,NVIDIA显卡驱动
  2. Tensorflow基础学习:自动求导函数tape.gradient
  3. 腾讯云轻量应用服务器(免费内测)开箱测评
  4. 国内首家!携程周三、周五可在家“躺平”:76%员工主动报名 !网友:我酸了...
  5. iOS设备踢出恢复模式的几种方法
  6. 微信公众号迁移保持OPENID不变新老账户粉丝迁移问题
  7. oracle阿拉伯数字转换成汉字,一个阿拉伯数字转中文数字的函数
  8. js实现手机横竖屏事件
  9. 什么是 Uptime TIER 数据中心等级认证体系?-孙长青
  10. 数据库之SQL更新语句中update set from用法