如何樸實無華的雙開微信?

前言

好久沒更新技術(shù)文章了,如果細算的話,或許可能大概已經(jīng)有半年之久了。。

一方面是身體原因?qū)е卢F(xiàn)在精力大不如以前了,這個很多關(guān)注我的老讀者應(yīng)該都知道,我就不一直拿這個說事了,說多了總感覺自己太矯情。

另一方面應(yīng)該也是自己懶散習慣了,就不想再費力寫一些文章了,不過我也不想為自己的懶惰做開脫,實事求是就是了。

寫過文章的作者應(yīng)該深有體會,寫一篇文章真的要耗費非常久的時間和精力??赡軜I(yè)余時間和周末都會被寫文章所占領(lǐng)。

我曾經(jīng)寫過一篇文章,用下班的業(yè)余時間寫的,可能你想象不到我用了多久才寫出來。斷斷續(xù)續(xù)寫了差不多一個星期才完事,我想再慢的作者應(yīng)該也沒有我這么笨了。

但是,為什么我現(xiàn)在又開始寫了呢?

主要是最近查資料,發(fā)現(xiàn)我的csdn一直都有人在關(guān)注我,評論我。沒想到這篇 HashMap 在 csdn 閱讀量已經(jīng)破萬了。

image

導致我內(nèi)心有非常大的愧疚感,愧疚這么久了不更新,竟然還有人關(guān)注我,點贊支持我。愧疚大家都在為了學習奮力拼搏,而我卻止步不前。

所以我痛定思痛,決定重新規(guī)劃我的寫文章計劃。(不立 flag,怕倒。。)

電腦如何雙開微信

寫下這篇文章,是因為我發(fā)現(xiàn)之前用的 mac 上的雙開微信軟件報風險了,就不敢再用了。但是,很多人像我一樣又有雙開微信的需求的,那么怎樣才能雙開甚至多開微信呢?

下面就介紹一種樸實無華,不用任何插件和軟件的方式實現(xiàn)你的需求。

windows系統(tǒng)雙開微信方法

可能很多人是在 windows 系統(tǒng)上運行微信的,那么首先說一下 win 上怎么雙開微信。

其實主要是通過 start 命令來開啟一個新的程序,我們先看一下 start 的語法。

在終端輸入命令:start /? 可以打開 start 的幫助文檔。

image

上圖說的已經(jīng)很清楚了,我就不再贅述了。對于我們來說,主要關(guān)注微信的安裝包路徑。例如我的在 D盤,完整路徑為:D:\Program Files (x86)\Tencent\WeChat\Wechat.exe

我們試一下,直接運行 start D:\Program Files (x86)\Tencent\WeChat\Wechat.exe

卻發(fā)現(xiàn)提示,找不到相對應(yīng)的文件。

image

仔細看就會發(fā)現(xiàn),提示的是找不到文件 D:\Program。發(fā)現(xiàn)了點什么沒有,很明顯,系統(tǒng)識別不了空格,以為我訪問的是路徑是 D:\Program,直接把空格后邊的截斷了,所以報錯。

因此,對于路徑中有空格的,我們需要加引號來處理。

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

image

會發(fā)現(xiàn),啟動了一個新窗口,但還是啟動不了微信。

此時,只需要在路徑前面加上空白雙引號"",表示創(chuàng)建一個空白的窗口,來指向我們要打開的程序。

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

注意:執(zhí)行命令時,需要微信是未打開的狀態(tài),如果已經(jīng)打開一個微信了,則不會生效。

因此,如果我們需要雙開微信的話,就需要寫一個批處理腳本,一次運行多個程序,這樣就不會出現(xiàn)命令失效的問題。

新建一個文件,名字隨便起,例如我起的就是“微信多開”。然后,后綴名改為.bat格式。

image

用記事本或者 notepad++ 等編輯工具打開,輸入上邊的命令兩行,即代表打開兩個微信客戶端。

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

輸入多行,則代表同時打開多個微信。保存,退出。

然后直接雙擊運行 .bat 文件,即可。

mac系統(tǒng)雙開微信方法

再來說下 mac 系統(tǒng)下怎么雙開微信。其實,也是通過命令的方式,只不過是用 linux 命令來實現(xiàn)(mac 也是類unix系統(tǒng),因此和 linux 命令類似)。

如果沒有耐心看下去的話,直接運行以下命令即可多打開一個微信客戶端。

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

但是,作為技術(shù)人員,還是多了解一些 linux 知識比較好(雖然比較基礎(chǔ)。。)

輸出重定向

在 linux 中,標準的輸入設(shè)備默認就是指鍵盤,標準的輸出設(shè)備默認就是指顯示器,對于命令行來說就是輸出在終端上。

重定向顧名思義,

  • 輸入重定向就是把輸入從鍵盤重定向到其他設(shè)備。
  • 輸出重定向就是把輸出從顯示器重定向到其他設(shè)備(一般重定向到文件)。

這里需要說明一下,輸入只有標準輸入(stdin),而輸出分為標準輸出(stdout)和標準錯誤輸出(stderr)。std 是標準的英語單詞 standard 縮寫。

在 linux 下,認為一切皆為文件。這里的文件不僅指普通意義上的文件,還包括目錄,進程(/proc),設(shè)備(/dev),套接字等。

而每個文件都有一個文件描述符,值是一個非負整數(shù)(>=0)。

所以,輸入輸出也有對應(yīng)的文件描述符(file descriptor,會發(fā)現(xiàn)很多地方都把文件描述符簡寫為fd)。

輸入輸出設(shè)備 文件描述符
標準輸入 0
標準輸出 1
標準錯誤輸出 2

輸入重定向的命令符號為 <,輸出重定向的命令符號為 >。

例如 echo hello 1> file 即是代表,本來要打印 hello 字符串到標準輸出設(shè)備(終端上),但是 1> file把它的輸出結(jié)果重定向到了 file 文件中。最終會發(fā)現(xiàn) file 文件中會多了一行“hello”字符。

ps:通常,標準輸出重定向 1> ,也可以省略掉文件描述符1,簡寫為 >。注意文件描述符和重定向符號之間是沒有空格的。

/dev/null 被稱為空設(shè)備,是一個特殊的設(shè)備文件。所有寫入其中的數(shù)據(jù)都會被丟棄,也就是我們通常說的“黑洞”,吞噬一切。

所以, /Applications/WeChat.app/Contents/MacOS/WeChat > /dev/null 這句話的意思就是把命令執(zhí)行后的標準輸出重定向到空設(shè)備文件中,也就是在終端不顯示任何標準輸出消息。

2>&1,中 &表示等同的意思,2>&1 就表示 2 的輸出重定向等同于 1 。也就是標準錯誤輸出重定向等同于標準輸出重定向。

所以 > /dev/null 2>&1 就代表,標準錯誤輸出等同于標準輸出,都重定向到空設(shè)備文件。就算命令運行報錯,也不會在終端輸出任何錯誤信息。因此,當我們的程序運行不需要輸出任何信息(包括報錯信息)的時候,通常使用這個命令。

nohup 和 & 命令

首先要明確這是兩個命令,它們代表不同的含義,產(chǎn)生不一樣的效果。

nohup 全稱是 no hang up ,意思是不掛斷。 & 是指后臺運行。

為了測試他們的不同,我們以一段 Java 代碼為例。(每隔一秒打印一下當前系統(tǒng)時間)

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 來運行程序。會發(fā)現(xiàn),程序正常執(zhí)行,每隔一秒輸出一下當前系統(tǒng)時間。

image

此時按下 ctrl + c 鍵發(fā)送 SIGINT 信號,程序接收到信號之后就會直接停止,不再輸出任何東西到控制臺。

這是因為,我們運行的方式默認是前臺運行的。

如果以后臺方式運行,會有什么效果呢?

在終端輸入 java TestRun & ,會先在終端顯示程序的進程號 3120 。

image

然后同樣按下 ctrl + c 發(fā)送 SIGINT 信號,會發(fā)現(xiàn)程序并沒有停止,而是繼續(xù)運行。

我們可以在終端打開另外一個窗口,輸入 ps aux|grep TestRun 來驗證是否程序真的在繼續(xù)運行.

image

如上圖,進程 3120 確實還在運行中。

此時,關(guān)閉第一個會話窗口(sesson),給程序發(fā)送 SIGHUP 信號會怎樣呢?

image

再次 ps 查看,會發(fā)現(xiàn)原先的進程 3120 也停止了。

如果以 nohup 方式運行,會有什么效果呢?

在終端輸入命令 nohup java TestRun

image

會有一段提示 "appending output to nohup.out",終端也沒有任何程序的輸出信息。

我們先不管這個 nohup.out 是什么,稍等再說。

另外打開一個窗口,ps 查看一下此時的進程號,為 3256 。

image

同樣的先按下 ctrl + c 發(fā)送 SIGINT 信號給程序,

image

會發(fā)現(xiàn),程序響應(yīng)后停止運行了。也可以手動 ps 驗證一下,

image

進程號 3256 確實被停止了。

再次運行 nohup java TestRun,來驗證關(guān)閉 session 會怎樣。ps 查看進程號為 3386 。

image

然后把第一個 session 關(guān)閉,發(fā)送 SIGHUP 信號,會發(fā)現(xiàn)進程號 3386 依舊在。

image

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

其實 nohup 會默認(在非重定向時)在當前目錄下,輸出一個 nohup.out 文件。程序的輸出都保存在 nohup.out 文件中。

image

至此,我們明白了他們之間的區(qū)別:

  • & 是以后臺的方式運行程序,結(jié)果輸出到終端。程序響應(yīng) SIGHUP 信號,而不響應(yīng) SIGINT 信號。

  • nohup 是不掛斷的方式運行程序,結(jié)果默認輸出到 nohup.out 文件。程序響應(yīng) SIGINT 信號,而不響應(yīng) SIGHUP 信號。

因此,我們通常會把 nohup 和 & 結(jié)合起來使用,對 SIGINT 和 SIGHUP 信號都不響應(yīng)。這樣程序就只能通過 kill 來關(guān)閉了。

實際上,nohup 的完整語法如下,

nohup Command [ Arg … ] [ & ],

  • command 為要執(zhí)行的命令,例如上邊的 java TestRun
  • Arg 為可選項,可以輸出重定向(到文件),默認不寫的話就會在當前目錄生成一個 nohup.out 文件來保存輸出內(nèi)容
  • & 為可選項,表示后臺運行。

所以,如果要打開一個新的微信客戶端,并且讓它后臺運行,不響應(yīng)任何信號。同時,不在終端顯示任何輸出信息,結(jié)合上邊的輸出重定向到文件,就可以這樣寫,

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

  • nohup 和 結(jié)尾的 & 同時使用,保證程序不會被掛斷和關(guān)閉。
  • /Applications/WeChat.app/Contents/MacOS/WeChat ,用來啟動微信客戶端的命令。mac 下大家微信的安裝目錄都是這個。
  • > /dev/null 2>&1 & 表示標準輸出和標準錯誤輸出都重定向到空設(shè)備文件,即不顯示。

雙開微信腳本

最后,我們可以編寫一個 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 &

保存,退出。

在當前目錄下執(zhí)行 sh openWechat.sh 即可同時打開兩個微信客戶端。若需要多開,則多加幾行同樣的命令。

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

本篇文章由一文多發(fā)平臺ArtiPub自動發(fā)布

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容