欢迎你客人 ( 登录 | 注册 )

  评价 ---

 | 分类: Linux
entry 2006-9-5, 07:41 AM
很爽!

它提供界面和服务分离的模式。以前vmware workstation的使用时,关闭窗口意味着关闭虚拟机。而在server的概念中这个窗口只是一个Console。好像连接linux服务器的一个终端而已。关闭它,后台的虚拟机仍然会自动运行。你可以随时再起动console去连接vmware server,看看guest系统的任务做的如何了。

它的暂停guest系统的速度很快,而且恢复也很快。有时可以用于减少内存消耗,先把guest系统暂停。需要的时候再重新运行就保证你在很需要host系统内存使用的时候,guest系统不会和你纠缠 wink.gif


需要注意的地方:
1、对vmware的开机,关机,暂停等操作非常快,而且不会提示你是否要进行这样的操作。注意别误操作了。
2、SnapShot的功能非常强悍。以至于我因为一次误操作。导致guest系统回归了最原始的状态。它的功能是记录你的guest系统的某一时刻。你对guest系统的后续操作会因为你点击回溯一个snapshot点,而全部消失

 | 分类: Linux
entry 2006-8-31, 07:40 AM
第一部分,设置全局变量
代码

dos charset = utf8
unix charset = utf8
hosts allow = 192.168.115.0/255.255.255.0


第二部分,专门开放一个共享目录。

代码

[Shared Folders]
   comment = windows mount dir
   browseable = yes

# By default, the home directories are exported read-only. Change next
# parameter to 'yes' if you want to be able to write to them.
  ;writable = yes

# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
   create mask = 0022

# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
   directory mask = 0022
   path = /home/user/vmware
   force user = user
   force group = user
   read only = No
   guest ok = Yes


 | 分类: Linux
entry 2006-5-27, 21:21 PM
这个问题本身是vmware自己的安装脚本中不支持>=2.6.16的内核版本所致。
现在这个问题的网上普遍的解决方法是:到下面这个连接中下载
http://knihovny.cvut.cz/ftp/pub/vmware/
这样一个文件。这个文件的101部分是版本编号,可能随时改变。
vmware-any-any-update101.tar.gz
解压这个文件,运行 runme.pl文件,按它的提示进行就都OK拉,

经过自己的使用,暂时没有出现什么异常。

 | 分类: Linux
entry 2006-2-5, 03:06 AM
由于本人比较喜欢在终端状态下的vim,所以gvim下的扩展使用的不多。这里介绍的也是我简单的使用以上扩展的一点点体会。请大家指正。 emacs 不会用,也没有比较过拉。 biggrin.gif



1、大体感觉,(因为使用时间不长,不全面)
总体使用的感觉定位查找类型定义基本可以用,但自动补全类型方面由于ctags的功能有限,感觉在大工程时,不一定很好用。

大型程序一定要global的参与,它的分析比较全面,但在vim中的提示信息有限。

taglist 精干,需要ctags的支撑 ,直接可以在左边列出函数列表,全局参数列表。(可以排序)

cscope 比较强大,可以对函数以及部分类型定义进行跳转,但有些BUG,好像在某些条件下无法正确找到分析枚举的定义。

cppcomplete 需要ctags的支撑,可以补全类型或者函数名(可不是普通Ctrl+P/N的那种)

global 新版本可以嵌入vim使用,提供比较完整解析和类型索引,和cscope比,稍微差些的就是对类型引用的打印列表中没有标识这个引用在什么函数中进行的。其实我的感觉global可能不是为vim所生,它的主要目的是用html的方式进行表达相关的关联关系和索引,使用起来感觉没有cscope的那么贴切。



2、相关的扩展的安装
代码
apt-get install  exuberant-ctags  cscope global

cppcomplete 和 taglist 要到www.vim.org的扩展列表中下载。

taglist 的下载地址:
http://www.vim.org/scripts/script.php?script_id=273
cppcomplete 的下载地址:
http://www.vim.org/scripts/script.php?script_id=527

然后在 建立目录
代码
$HOME/.vim/plugin


将下载的cppcomplete.vim 和 taglist.vim拷贝到$HOME/.vim/plugin中。
安装了global后,最新4.8.6 以上版本有带vim的扩展,将它也拷贝到 $HOME/.vim/plugin

debian sid 版本global安装后扩展文件在
代码
/usr/share/doc/global/examples/gtags.vim.gz

需要拷贝到$HOME/.vim/plugin后解压,解压方法:
代码
gzip -d  gtags.vim.gz



3、使用这些工具
1)准备工作,先修改一下$HOME/.vimrc文件

为了更好的使用cscope请添加如下内容,这样Ctrl-]的跳转将由cscope的tags进行分析。
代码

if has("cscope")
set csprg=/usr/bin/cscope
set csto=0
set cst
set nocsverb
" add any database in current directory
if filereadable("cscope.out")
cs add cscope.out
" else add database pointed to by environment
elseif $CSCOPE_DB != ""
cs add $CSCOPE_DB
endif
set csverb
set cscopetag
set cscopequickfix=s-,g-,c-,d-,t-,e-,f-,i-
endif


2)使用cscope
cscope的tag生成最简单的方法是:
在你的开发工程的最上层目录执行cscope-indexer,它会遍历下面的所有目录,生成两个文件,一个是cscope.files,这个文件记录需要生成tags的文件名,可以手工修改,另一个是cscope格式的tags文件cscope.out。

完成后,你在生成了cscope.out的目录打开工程的任意文件,就可以使用Ctrl-]跳转查找类型定义了。
代码

cs f s xxxx  查找xxxx出现的地方,它能详细列出哪些文件的哪行的哪个函数引用,以及该行的内容,比较不错。 :)


它的所有命令的使用请参考:
代码

help cscope


3)使用taglist
taglist的功能是即时生成当前文件的函数列表和全局变量列表,便于索引。
在vim中命令模式下使用
Tlist 打开或者关闭当前文件的索引;
TlistSync 立即在打开的索引窗口中定位当前的光标所在位置属于哪个函数或者结构定义中。
还有其他命令,请参考它的帮助文件。

4)ctags的使用
其实cscope是用来替代ctags功能的,ctags的应用广泛,还有其他很多的软件依赖它。

例如要生成cppcomplete需要的tags文件的话,需要运行下面的命令:
代码

ctags -n -f cppcomplete.tags --fields=+ai --C++-types=+p * -L cscope.files

注意,我在最后使用了参数"-L cscope.files" 这仅仅是借用拉cscope生成的文件索引来帮助ctags去查询相关工程文件生成tags。

5)使用cppcomplete
cppcomplete的使用我只是简单的发现它可以根据上述方法生成的tags文件来自动补全类型成员。
使用很简单,就是在你需要补全类型成员时,按F8键就可以拉。它一般第一次使用时,需要让你确认是使用已有的tags文件还是再生成一次。一般我们自己控制生成tags文件的时机,它就使用就行拉。
但它也受到ctags的分析能力比较差的限制,可能不是每次都能帮到你。

6)使用global
在工程的最上层目录执行命令:
gtags
等待它完成所有需要的global自己格式的tags的生成
生成完后,需要的就是在生成tags的目录打开你的工程的任意文件,用如下命令查询相关类型引用和关联关系:
代码

Gtags xxxx      查找xxxx的定义
Gtags -r xxxx   查找xxxx的引用
Gtags -s xxxx   查找xxxx出现的地方


它的提示信息很有显,不如cscope更直观,但对大型分析的比较完整。
有时它无法正常分析的类型 可以试试用带-s 的参数的方式找找类型定义。再不行,我就不清楚拉 smile.gif


4、草草的收尾
我使用它们也是一点一点的摸索的没有系统的完整的使用过,也受限于本人的Linux使用经验和工作关系,所以非常简单的使用体会给大家一个参考,希望能有所帮助。更希望后来者能不断补充相关的使用体会。大家都需要交流提高,呵呵。


此文首先发表于LinuxSir.Org,在此仅做收录。
http://www.linuxsir.org/bbs/showthread.php?t=241578

 | 分类: Linux
entry 2005-12-2, 19:49 PM
在linux里,如果你使用utf-8作为默认的字符集设置,那么以下对samba的使用技巧将对你有用。

当samba服务器,为其他客户端提供共享服务:
请修改 /etc/samba/smb.conf文件,在全局设定的地方添加如下内容
代码

#自己的swat系统之类打印错误消息时的字符集
   display charset = utf8
#dos客户端连接时,给他们发送的字符集
   dos charset = cp936
#unix客户端连接时,给他们发送的字符集
   unix charset = utf8


当samba客户端时,要mount其他windows机器的共享资源命令行:

代码
smbmount //win_machine/dir local_mount_point/ -o iocharset=utf8,codepage=cp936

或者
代码
mount -tsmbfs -o iocharset=utf8,codepage=cp936 //win_machine/dir local_mount_point/

注意:
iocharset这里是本地使用的编码方式,
codepage则指定的是对方机器的编码方式。

在(smb)mount其他windows机器时一定不能写错。否则看到的就是乱码。 smile.gif


利用bash 的别名特性我们还可以简单的应用


呵呵,还有个技巧,那么长的参数可以简化 wink.gif

# 简化挂载windows的共享时参数的输入 smile.gif
代码
alias winmnt='mount -tsmbfs -o iocharset=utf8,codepage=cp936'


这样上面那些长长的挂载命令可以简单缩写为:
代码
winmnt -o username=guest //winserver/share /local

不错吧。

下面吗,是有时自己用些不同编码的文本输出时的工具 wink.gif
代码
# 将GBK的编码的输出转换为UTF8
alias g2u='iconv -fcp936 -tutf8'
# 将UTF8的编码的输出转换为GBK
alias u2g='iconv -futf8 -tcp936'

 | 分类: Linux
entry 2005-10-18, 13:47 PM
方案一: ssh 远程连接建立桌面

1、服务器端的sshd的X11转发功能要打开,Debian下修改 /etc/ssh/sshd_config中
X11Forwarding no
改为
X11Forwarding yes

2、在你的linux桌面中ssh -Y user@remotehost方式登陆到远程机器
注意-Y参数可以让你接收X11的数据转发

3、登陆完,并没有完成远程桌面的显示,需要在登陆后运行相关程序才能启动相关X程序。
运行xterm 就可以启动远程的xterm程序了。
运行gnome-about看看是否是你远程机器的上的版本信息 smile.gif

如果运行 startkde
这样就可以在你的桌面上看到远程的X的启动界面了。
试试吧。不过有个问题,就是它会把你桌面启动的程序也显示在远程桌面的的任务栏中。


方案二:
1、在远程机器上按照gdm/kdm等登陆管理器,
2、并且打开他们的XDMCP的功能(当然这个带有安全隐患)
3、我实验的过程中发现,本地机器好象要和远程机器的xdm一致(应该没有这个道理)
4、以gdm为例子,选择行动(Action)中的运行XDMCP管理器,
这样它就可以探测到局域网中可以用的XDMCP的服务器了。

选择后,你就完全进入了远程系统的桌面系统了,和本地没有任何关系了。

cool.gif

 | 分类: Linux
entry 2005-10-6, 14:55 PM
因为URXVT提供urxvtd作为服务器,然后用urxvtc作为客户端连接,节省内存,又可以高效运作。所以就一直要配置GDM环境下自启动的机制。

但如果只是简单的在/etc/gdm/Xsession开头加上
urxvtd&
是可以启动,但如果注销后这个进程无法退出。
以前以为Xsession可以执行退出扫尾工作。但发现我错了。它会调用/etc/X11/Xsession.d下的脚本,但不会退出。哪怕注销了GNOME/etc/gdm/Xsession只会直接被KILL掉。无法调用killall urxvtd命令。

想想既然它没有释放机制。只好用一个办法在调用
urxvtd&
前先执行
killall urxvtd
但,还是不行,我发现普通用户如果这样执行一个被init进程直接接管的进程时,无法简单的用killall杀掉。
查看了killall 的帮助后,发现 killall -s9 urxvtd可以完成这个工作。
那么最好的方法是:

在/etc/gdm/Xsession文件开头添加如下两行。
代码

killall -s9 urxvtd
urxvtd&


高兴一下。毕竟如果直接执行urxvt每个窗口都占用很多10M左右的内存。这样就可以大胆的开N个urxvt窗口了。

 | 分类: Linux
entry 2005-10-6, 14:53 PM
vsftpd 如果你在/home/ftp目录下建立软连接,其他用户登陆时是无法使用的。

然而如果你用如下命令:

代码
mount --bind /data/share /home/ftp/share


将简单的帮你完成目录共享。但要注意这个操作重启后就会无效,如果你需要重启有效,则要修改/etc/mstab 或者 /etc/fstab 这个我没有试过。 smile.gif

 | 分类: Linux
entry 2005-10-6, 14:49 PM
在~/.bashrc中添加一行
代码

setterm -bfreq 0

便可以在夜间不吵到周围睡觉的人了。 smile.gif

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31



我的 Blog 链接