bohj008 发布的文章

最近在ubuntu服务器上console跑matlab脚本,但还要用图形化手动处理数据,来回传数据文件太大,太麻烦,因此在ubuntu server上安装一个gnome桌面。步骤如下:

1.在ubuntu上安装vncserver,使用命令:sudo apt-get install vnc4server
2.开启vnc服务,输入命令:vncserver ,首次启动会要求设置密码,后面可以使用 vncpasswd 修改;
看到 New ‘:1 ()’ desktop is :1 (代表主机名)即表示启动vnc成功,在主目录下产生一个.vnc目录;
但是,这个页面是vncserver默认使用的窗口管理器是twm,这是一个很简陋的窗口管理器,下面我们把桌面改成GNOME或KDE。
3.下面我们开始安装gnome桌面环境
(1)安装x-windows的基础 :

sudo apt-get install x-window-system-core

(2)安装登录管理器:(还可以为kdm/xdm)

sudo apt-get install gdm

(3)安装Ubuntu的桌面:(还可以为Kubunut-desktop/ Xubuntu-desktop )

sudo apt-get install ubuntu-desktop

(4)安装命令: 可以安装GNOME的一些基础。

sudo apt-get install gnome-core

4.备份原有xstartup文件:

 cp ~/.vnc/xstartup ~/.vnc/xstartup.bak

下面我们需要修改vnc启动文件,使用命令:vi ~/.vnc/xstartup

\#!/bin/sh def export XKL_XMODMAP_DISABLE=1 unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS

gnome-panel & gnome-settings-daemon & metacity & nautilus &
gnome-terminal &

  1. 输入命令:vncserver -kill :1 杀掉原桌面进程, 再次输入:vncserver :1 生成新的会话。可加geometry参数更改分辨率vncserver :1 -geometry 1366x768
  2. 将vncserver安装到service
    (1)建立启动文件sudo vi /etc/init.d/vncserver,配置如下:

\#!/bin/bash
\### BEGIN INIT INFO
\# Provides: VNCSERVER
\# Required-Start: $remote_fs $syslog
\# Required-Stop: $remote_fs $syslog
\# Default-Start: 2 3 4 5
\# Default-Stop: 0 1 6
\# Short-Description: Start daemon at boot time
\# Description: Enable service provided by daemon.
\### END INIT INFO unset VNCSERVERARGS VNCSERVERS="" [ -f /etc/vncservers.conf ] && . /etc/vncservers.conf prog=$"VNC server"
start() { . /lib/lsb/init-functions REQ_USER=$2 echo -n $"Starting
$prog: " ulimit -S -c 0 >/dev/null 2>&1 RETVAL=0 for display in
${VNCSERVERS} do export USER="${display##*:}" if test -z
"${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then echo -n "${display}
" unset BASH_ENV ENV DISP="${display%%:*}" export
VNCUSERARGS="${VNCSERVERARGS[${DISP}]}" su ${USER} -c "cd ~${USER} &&
[ -f .vnc/passwd ] && vncserver :${DISP} ${VNCUSERARGS}" fi done }
stop() { . /lib/lsb/init-functions REQ_USER=$2 echo -n $"Shutting
down VNCServer: " for display in ${VNCSERVERS} do export
USER="${display##*:}" if test -z "${REQ_USER}" -o "${REQ_USER}" ==
${USER} ; then echo -n "${display} " unset BASH_ENV ENV export
USER="${display##*:}" su ${USER} -c "vncserver -kill :${display%%:*}"

/dev/null 2>&1 fi done echo -e "\n" echo "VNCServer Stopped" } case "$1" in start) start $@ ;; stop) stop $@ ;; restart|reload) stop
$@ sleep 3 start $@ ;; condrestart) if [ -f /var/lock/subsys/vncserver
]; then stop $@ sleep 3 start $@ fi ;; status) status Xvnc ;;
*) echo $"Usage: $0 {start|stop|restart|condrestart|status}" exit 1 esac

(2)赋予执行权限

sudo chmod +x /etc/init.d/vncserver 

(3)建立配置文件

sudo vi /etc/vncservers.conf
VNCSERVERS="1:krizna 2:bobby" VNCSERVERARGS[1]="-geometry 1024x768"
VNCSERVERARGS[2]="-geometry 1024x768"

这样用户krizna就可以使用IP:1,而用户bobby就可以使用IP:2了。

(4)开机启动:sudo update-rc.d vncserver defaults

现在就可以使用sudo /etc/init.d/vncserver start 以及(stop, restart) 等命令了。

注:登录后有可能会有快捷键问题,如按"d"显示桌面,按"s"显示系统菜单,按"up, down"最大小化等。解决方法如下:
(在本机输入命令,VNC登录后,粘贴到命令行)
打开配置编辑器dconf-editor ,找到org->gnome->desktop->wm->keybindings,在右侧删除所有带Super的快捷设置,然后断开vnc,并重启vnc服务即可。

最近发现ssh总是闲置一段时间后就自动断开,可以通过修改OpenSSH client参数,使得ssh每隔一段时间与服务器通信一次,所以长时间不操作也不会断开。修改方法如下:

echo 'ServerAliveInterval 60' >> ~/.ssh/config

sudo echo 'ServerAliveInterval 60' >> /etc/ssh/ssh_config

注,1. OpenSSH client配置文件优先级为 (1) command-line options > (2) user's configuration file (~/.ssh/config) > (3) system-wide configuration file (/etc/ssh/ssh_config)

  1. 推荐使用用户自己的配置,如果~/.ssh/config 不存在就新建一个。

新到一台ubuntu服务器,先装一个matlab跑程序,步骤如下:

  1. 将matlab iso上传到服务器;
    2. 创建安装目录

    mkdir /usr/local/matlab
    mkdir /media/cdrom0

3. 挂载iso文件:

sudo mount -o loop <your matlab iso file>.iso /media/cdrom0

4. 新建激活文件 activate.ini

isSilent=true //开启silent模式
activateCommand=activateOffline //设置激活方式, 离线激活
licenseFile=/path/lic_standalone.dat //license文件位置 .dat or .lic
  1. 安装命令(xxx替换成your install code and your license file)
    sudo ./install -destinationFolder /usr/local/matlab -fileInstallationKey xxx-xxx-xxx-xxx -agreeToLicense yes -outputFile /tmp/mathworks_install.log -mode silent -activationPropertiesFile /path/activate.ini
  2. 重新激活
    如果在安装结束后出现提示:

    Error: Activation cannot proceed. You may either:

    1. Set an X11 display, and restart the activation process
    2. Use the silent activation feature
    3. Activate using the license center

需要重新激活,命令如下:

sudo /usr/local/matlab/bin/activate_matlab.sh -propertiesFile /path/activate.ini

如果激活不成功,还可以用以下命令启动:

/usr/local/matlab/bin/matlab -nodesktop -nodisplay -c /path/license.dat

7. 添加环境变量
在 /etc/profile 中添加:

set matlab evvironment
export PATH=$PATH:/usr/local/matlab/bin

并执行source /etc/profile

  1. 启动matlab

    matlab -nodesktop -nodisplay

启动参数:
-nodesktop    启动jvm(Jave Virtual Machine),不启动desktop, 但help 界面,preferences界面等仍可通过cmdline 调出,即jvm启动但不启动desktop,可以启动其他显示; 但是matlab不会在cmd history记录本次执行的命令;
-nodisplay    启动jvm,不启动desktop,不启动任何显示相关,忽略任何DISPLAY 环境变量; 即jvm启动但不能显示;
-nojvm       不启动jvm,则与之相关的一切活动将无法进行,包括图形界面显示,help 界面,preferences界面等 即jvm不启动故不能显示;
-nosplash     只是不显示启动时的log画面,jvm,desktop等正常启动。

注:启动时可能会遇到错误,需要安装依赖包
如:libXt.so.6: cannot open shared object file: No such file or directory

sudo apt-get install libxtst6
sudo apt-get install libxp6 libxp-dev
sudo apt-get install libXext6 libXext-dev
sudo apt-get install libxt6 libxt-dev
sudo apt-get install libxmu6 libxmu-dev

Linux 和 Windows 下 Matlab 都能以命令行的方式运行

matlab -nosplash -nodesktop -r 文件名

在Sublime Text下新建 matlab build 步骤:
1. 新建Build System:点击Tool -> Build System -> New Build System

{
"cmd": ["<your matlab path>", "-nosplash", "-nodesktop", "-r", "$file_base_name"], 
"selector": "source.m" 

}

2. 为这个JSON文件取个文件名保存(这个名字将成为新的Build System的名字,出现在Build菜单中)

使用步骤:
1. 打开一个.m文件,点击View -> Syntax -> open all with current extension as.. 在弹出的列表中选择MATLAB(因为Sublime Text 会把.m文件当成Objective-C来自动设置语法高亮)
2. 在Tool -> Build System下选择刚新建的配置,然后点击Tool -> Build即可。