簡體   English   中英

使Matlab自動化而無需用戶登錄

[英]Automating Matlab without requiring the user to be logged in

當用戶未登錄時,是否可以將Matlab設置為在后台運行特定腳本? 該腳本在帶有Matlab R2014a的Windows Server 2008計算機上可以正常運行。 它不需要GUI即可完成腳本,但是我猜測Matlab需要設置用戶特定的環境。 有沒有可以提前設置的地方?

我已經嘗試過“任務計划程序”,並且工作正常,但是您必須將設置設置為僅在該特定用戶登錄時運行,否則什么也不會發生。 當然,問題在於用戶會話需要連續監視才能保持登錄狀態(斷電,更新等)。

過去有人處理過嗎? 我們已經考慮過對其進行編譯,但是顯然腳本使用的某些函數和對象(我沒有寫過)在編譯過程中不會殘留。

歡迎任何想法或建議!

我為客戶端做了一些工作,在該客戶端上,我們有一個MATLAB實例在服務器上連續運行,做了一些工作。 服務器偶爾會發生故障(停電,IT部門發生故障等),因此需要自動將其恢復。

請注意,由於許可的原因,MATLAB確實需要以用戶身份運行,因此我們的MATLAB實例始終在指定的帳戶下運行,並具有專用於連續運行該實例的許可證。

我們有一個Windows批處理文件來啟動合適的MATLAB實例,其中包含與以下命令類似的命令:

CALL matlab.exe -nosplash -nodesktop -sd "myStartupFolder" -r "myMATLABCommand"

然后,我們設置了計划任務,以便在該帳戶登錄5分鍾后運行批處理文件,並設置Windows,以便在Windows啟動時自動登錄該帳戶(我不是Windows管理員,但是我認為我們必須做一些奇怪的事情才能做到這一點,例如將帳戶添加到某個特殊的域組中,或賦予該帳戶特殊的權限-您可能需要研究更多內容。

無論如何,這為我們解決了這個問題。 如果服務器出現故障然后恢復(可能是IT對其進行了備份),則帳戶將自動登錄,批處理文件將運行,並且MATLAB實例也將恢復。 如果我們需要(很少)直接在該帳戶下登錄而不執行任務,那么我們有5分鍾的時間可以停止計划任務的運行,這沒問題。

希望有幫助!

不幸的是,Matlab只能在沒有Linux上的GUI的情況下啟動(也許在Mac OS X上也是如此)。

~$ cat /tmp/stackoverflow.m 
s='stackoverflow';
length(s)

~$ ./R2013a/bin/matlab -nodisplay -nojvm -nodesktop -nosplash -r "run /tmp/stackoverflow.m, exit"

                                                                        < M A T L A B (R) >
                                                              Copyright 1984-2013 The     MathWorks, Inc.
                                                                R2013a (8.1.0.604) 64-bit (glnxa64)
                                                                         February 15, 2013


To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.


ans =

    13

~$ 

但是Matlab本身沒有能力Shebang #! 在Bash腳本中。 因此,這始終是一種解決方法。

更好的解決方案可能是連續運行Matlab實例並編寫守護程序/腳本,例如,.m腳本將隨時間運行。

更好的方法是使用Matlab Coder Toolbox(如果有)並從.m文件中編譯獨立的二進制文件。 此二進制文件應該可以在Windows上按計划的任務輕松運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM