失乐园

技术之路

BlogJava 联系 聚合 管理
  19 Posts :: 44 Stories :: 40 Comments :: 0 Trackbacks

2011年9月14日 #

linux下添加,删除,修改,查看用户和用户组

1,创建组

groupadd test

增加一个test

2,修改组

groupmod -n test2 test

test组的名子改成test2

3,删除组

groupdel test2

删除 test2

4,查看组

a),查看当前登录用户所在的组 groups,查看apacheuser所在组groups apac

 一,组操作

1,创建组

 

groupadd test

 

增加一个test

 

2,修改组

 

groupmod -n test2  test

 

test组的名子改成test2

 

3,删除组

 

groupdel test2

 

删除 test2

 

4,查看组

 

a),查看当前登录用户所在的组 groups,查看apacheuser所在组groups apacheuser

 

b),查看所有组 cat /etc/group

 

c),有的linux系统没有/etc/group文件的,这个时候看下面的这个方法

 

cat /etc/passwd |awk -F [:] ‘{print $4}’ |sort|uniq | getent group |awk -F [:] ‘{print $1}’

 

这里用到一个命令是getent,可以通过组ID来查找组信息,如果这个命令没有的话,那就很难查找,系统中所有的组了.

 

二,用户操作

 

1,增加用户

 

查看复制打印?

[root@krlcgcms01 mytest]# useradd –help

Usage: useradd [options] LOGIN

 

Options:

-b, base-dir BASE_DIR       设置基本路径作为用户的登录目录

-c, comment COMMENT         对用户的注释

-d, home-dir HOME_DIR       设置用户的登录目录

-D, defaults                改变设置

-e, expiredate EXPIRE_DATE 设置用户的有效期

-f, inactive INACTIVE       用户过期后,让密码无效

-g, gid GROUP               使用户只属于某个组

-G, groups GROUPS           使用户加入某个组

-h, help                    帮助

-k, skel SKEL_DIR           指定其他的skel目录

-K, key KEY=VALUE           覆盖 /etc/login.defs 配置文件

-m, create-home             自动创建登录目录

-l,                           不把用户加入到lastlog文件中

-M,                           不自动创建登录目录

-r,                           建立系统账号

-o, non-unique              允许用户拥有相同的UID

-p, password PASSWORD       为新用户使用加密密码

-s, shell SHELL             登录时候的shell

-u, uid UID                 为新用户指定一个UID

-Z, –selinux-user SEUSER     use a specific SEUSER for the SELinux user mapping

[root@krlcgcms01 mytest]# useradd --help

Usage: useradd [options] LOGIN

 

Options:

 -b, --base-dir BASE_DIR       设置基本路径作为用户的登录目录

 -c, --comment COMMENT         对用户的注释

 -d, --home-dir HOME_DIR       设置用户的登录目录

 -D, --defaults                改变设置

 -e, --expiredate EXPIRE_DATE 设置用户的有效期

 -f, --inactive INACTIVE       用户过期后,让密码无效

 -g, --gid GROUP               使用户只属于某个组

 -G, --groups GROUPS           使用户加入某个组

 -h, --help                    帮助

 -k, --skel SKEL_DIR           指定其他的skel目录

 -K, --key KEY=VALUE           覆盖 /etc/login.defs 配置文件

 -m, --create-home             自动创建登录目录

 -l,                           不把用户加入到lastlog文件中

 -M,                           不自动创建登录目录

 -r,                           建立系统账号

 -o, --non-unique              允许用户拥有相同的UID

 -p, --password PASSWORD       为新用户使用加密密码

 -s, --shell SHELL             登录时候的shell

 -u, --uid UID                 为新用户指定一个UID

 -Z, --selinux-user SEUSER     use a specific SEUSER for the SELinux user mappinguseradd test

 

passwd test

 

增加用户test,有一点要注意的,useradd增加一个用户后,不要忘了给他设置密码,不然不能登录的。

 

2,修改用户

 

usermod -d /home/test -G test2 test

 

test用户的登录目录改成/home/test,并加入test2组,注意这里是大G

 

gpasswd -a test test2 将用户test加入到test2

gpasswd -d test test2 将用户testtest2组中移出

 

3,删除用户

 

userdel test

 

test用户删除

 

4,查看用户

 

a),查看当前登录用户

 

[root@krlcgcms01 ~]# w

[root@krlcgcms01 ~]# who

 

b),查看自己的用户名

 

[root@krlcgcms01 ~]# whoami

 

c),查看单个用户信息

 

[root@krlcgcms01 ~]# finger apacheuser

[root@krlcgcms01 ~]# id apacheuser

 

d),查看用户登录记录

 

[root@krlcgcms01 ~]# last 查看登录成功的用户记录

[root@krlcgcms01 ~]# lastb 查看登录不成功的用户记录

 

e),查看所有用户

 

[root@krlcgcms01 ~]# cut -d : -f 1 /etc/passwd

[root@krlcgcms01 ~]# cat /etc/passwd |awk -F \: ‘{print $1}’

posted @ 2011-11-14 14:00 狄浩 阅读(32464) | 评论 (0)编辑 收藏


在计 算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新 的字符传过来,那么这个字符将丢失。

于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。

这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。

Unix 系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回车 >”,即“\n\r”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开 的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
posted @ 2011-11-13 13:11 狄浩 阅读(319) | 评论 (0)编辑 收藏

      1、菜单window->Preferences->Java->Editor->Content Assist->Enable auto activation 选项要打上勾
      2、windows-->preference-->workbench-->keys 下设置Content    Assist    的快捷键
      3、window->Preferences->Java->Editor->Content Assist->Advanced   上面的选项卡Select the proposal kinds contained in the 'default' content assist list: 中把 Other Java Proposals 选项打上勾就可以了。
posted @ 2011-11-13 13:04 狄浩 阅读(308) | 评论 (0)编辑 收藏

    

linux太难用了!(一通鼠标点击,进入/etc)
学习linux,你忘记windows的思维方式了吗?
怎么安装软件阿?那一堆文件是干什么的阿?
学习linux,你还在浮躁吗?
进入linux,随便按了几下.赶紧重启进入win
学习linux,你用心了吗?
.......

首先,我想引用一下别人说过的一句话:除非在过去的十年你一直生活在山洞里,否则你一定听说过linux.

是的,现在听说过linux,会一点linux基本操作的人多如牛毛,然而真正能用linux做一点事情的确少之又少,这就造成了现在的状况:各大 linux论坛十分热闹,但我国linux人材却还十分紧缺.到底是什么原因造成了这样的状况? 纠其原因,只有两个字:浮燥!

如果在论坛里来一次调查投票,看一下在论坛里的人到底有多少人手头有一本以上的正规linux教材.我想这个数字不会超过30%. 如果再问一下,有多少人完整的读过各发行版自带的入门文档,系统定制文档,系统管理文档和系统安全文档,恐怕这个数字不到10%. 如果进一步再调查一下究竟有多少人静下心来学习过操作系统和计算机网络等和linux学习十分密切的专业课程,那么恐怕只有3%的数字都不到了.

这让我想到了98年前后IT泡沫时代的中关村.在中关村的大街小巷,到处是一个个意气分发牛哄哄的IT精英.他们戴着默镜,剔着小平头,张口闭口都是网络, 安全,信息,黑客,代码,产业.T恤背后写着三个字:别惹我! 然而最后IT泡沫一过,只有那些真正肯安安心心静心学习的人在IT界存活了下来.

现在国人学习linux的状况也是这样,学linux的人个个都意气分发,以为学习linux会用linux是多么了不起.学了一点皮毛就认为很牛了.但是那些企业用人单位却很难找到真正适合的linux人材.因此,我想就目前的状况发表一下我的看法.

首先,这篇文章是写给那些想成为linux高手,并真正想用linux做些事情的人.如果你只想做一个菜鸟,没事的时候在你双系统启动的电脑上偶尔选一次 linux,然后没事进去偷着乐,那就请你自便.另外,我想说明,和真正的牛人比起来,我自己还处于一个比较低的水平.我没有读过内核源代码,不知道 linux工作原理等等,但是通过摸索,至少我已经找到了通往高手的道路的方向.因此还是想说两句.

1,linux不是玩具

如果你想系统的学习linux,你必需清楚的认识到这一点.现在有很多人,号称是linux爱好者,但是他们大部分的事情还是用windows 做,而linux只是作为一个随便玩玩的系统.他们懂得一些linux的基本操作,知道有linux这个玩艺,也因为经常听人家说linux好就咬定了 linux就是好.只要有人说linux比windows差,那么他们就奋起反驳,他们也看不起用windows的人,认为用windows的人水平低. 但是自己用电脑的大部分时间还是用windows并且把重要的文件都放在了windows分区,因为他们骨子里只把linux当做玩具,没有真正领悟 linux的精髓所在.如果你真正想系统的学习linux,想用linux有所作为,那么请忘记windows的思维方式,慢慢感受和习惯linux的操作方式,总有一天你会真正体验到他的奥妙所在,从而从自己内心深处喜欢他,使用他,而不是为了赶时髦或向人炫耀而使用他.

2,手头有一本好的入门教材吗

"如果你还没有好好的读完过一本linux安装及入门教材就不要到初学者论坛来问题!因为你连问问题的资格都没有! " 这是我的一个比较偏激的观点.

如果你现在开始下决心学习linux了,那么第一件你要做的事情是到书店去挑一本好书.而不是到论坛社区去问该用什么版本,该如何学习 linux.一本好的入门教材可以让你快速领悟linux的操作方式,系统的基本使用等等.而且都是前人总结经验写出来的,他可以帮你搭起一个学习 linux的框架,对linux有一个总体的认识.就好比建一撞大楼前先打好地基,搭好混凝土框架.以后就可以慢慢往这个框架里添砖加瓦,最后建起大楼. 而那些想急于学习的,不想看书,只想靠混论坛来学习linux知识的人,就好比建一撞大楼,今天建好第一层,然后第一层就要全部粉刷好,装修好,家具买好住进去,然后第二天再开始建第二层.这样没有整体规划的学习是学不好linux的,最后的结果是浪费自己的时间,也浪费别人的时间. 如果你不信,可以让实事去告诉你,以一年为限,你和你的一个朋友同时从0开始学linux,计算机基础差不多.你去买几本好书自己慢慢看边看边做实验,让你的朋友整天到各大论坛瞎混零散的学些linux知识.也许一开始,你的朋友会比你懂得多,但是一年以后你的水平肯定在你的朋友之上. 在初学阶段,不要随便在论坛上发问,多看书是根本,即使真的非问不可的问题,也要先自己动手察资料解决.实在不行再来问,高手不会鄙视菜鸟,因为每一个高手都是从菜鸟过来的,他们都知道菜鸟的苦衷.但是高手会看不起那些自己不愿动手动脑不会学习解决问题而只想得到现成答案的人.那样的人会被高手在心里暗骂成不配用linux的蠢货.

你需要以下几种书:
一本好入门教材->一本linux指令参考手册->linux系统管理手册->讲解linux系统原理的书.

一开始,你只需要入门教材就可以了.并且严格安教材的讲解去学习,不要一天到晚想着去装显卡驱动啦,装游戏啦,装软件啦,这些都没有必要.你就当你自己的电脑不能上网,只能通过看书学习.慢慢看书,稳抓稳打.慢慢地就融会贯通了.这时候你再到linux初学者论坛去看看,你在那里早已经是高手了.

另外,一开始你要选定一本入门教材,但是不能只看一本,因为有些书上讲的,可能是另外的书上没有的.因此,重点选一本教材看完.然后再看两三本入门教材浏览一下.作为对第一本书的知识的扩充和巩固. 在看书过程中,如果你有什么不懂的,不要急于上论坛问,自己认真看几次,实在不懂没有关系,把问题放在那里.不要钻牛角尖不懂不肯放手,这种精神是好的, 但是方法是错误的.你尽管学下去,也许你看完书本以后的内容,就对前面不懂的内容豁然开朗了.这是在学习linux中常有的情况.

另外,现在很多入门书籍是针对非技术型用户的.(我把那些对linux本身不感兴趣,只想用他来上网,听音乐和打字的人称为非技术型用户,而把对linux本身感兴趣的人称为技术用户)
这些针对非技术型用户的入门书籍几乎通篇都是插图,讲解的内容都是如何在图形界面下操作.这些书籍并不能帮你成为一个高手.反而会让你养成倚赖鼠标和图形界面操作的习惯以后很难改掉.因此不能看这些书,一定要买那些一开始就从系统基本机构基本命令开始讲解的书籍.我看过的第一本linux入门书籍共有十多章,但是他从第十一章开始才大致的讲解了一下图形界面的知识.我很感谢这本书,让我一开始就脱离了windows的思维方式,给我以后的进一步学习带来了很大帮助.

完成以上的内容,你就完成了建大楼打地基建混凝土框架的过程了.可以接下来进一步学习了.

3,你看完系统自带的文档了吗?

当你完成入门的过程后,就可以开始读其他的文档,然后到论坛的精华区看看,向你建起来的大楼框架中添砖头了.当然 ,首先要读的,还是系统自带的文档.

绝大多数linux发行版都自带非常详细的文档.比如我一直在用的redhat,他有从系统安装到系统安全,针对不同层次的人的详尽文档.静下心来,把这些文档读完,比看任何论坛的精华区都有用.书籍和文档就好比是你每天都离不开的一日三餐,论坛区的精华文档就好比是点心和水果.你可以不吃点心和水果,但是决不能不吃正餐.

当然,不能为看文档而看文档,你一定要边看边安文档中说的做试验验证.这样才印象深刻,否则看过就忘记了等于没有看.

另外,如果真心想学习linux就不要吝啬,也不要害怕丢失数据而不敢做实验.我建议你去买一个小的二手硬盘,然后放开手干.不要怕丢失数据而不敢做,如果你没有学会技能,将来做了linux系统管理员或者网络管理员到那时因为不会而丢了数据就是大事情了.

4,学习linux不是逛自由市场.

经常看到有人问用什么版本的linux好,其实只要你认真学习无论什么版本都挺好的.要知道,开发linux发行版的人都是通读过linux内核代码,对 linux原理极其精通的人,而且每一个开发团队都对他的发行版做过测试后放出的.那些国际知名的大品牌更是如此. 因此,讨论什么版本好并无意义,关键是你是不是真心想学.不过,为了避免曲高和寡,最好选用的人多的版本,比如redhat manrake suse 等等. 国内有一两个linux版本做的也不错,但是国内的linux都是面向非技术型用户开发的,因此,如果你想成为高手,建议不要用国内的版本.
学习linux不是逛自由市场,选定版本就要静下心来学习.不要今天换版本明天要升级.这样对你没有好处.我见过一些人号称用过十几种甚至几十种 linux,向人谈论起来头头是到,好像懂的很多,但是如果你让他去用linux搭建一个web服务器,做一个linux网关,他就什么都不会了.他们把时间都浪费在了版本的转换上了.

5,你能看懂英文文档吗?

谈论这个问题,我有点低气不足,因为我自己的英语很差.但是, 至少我可以无障碍的读完一般的计算机文档.计算机英语很简单,只要熟悉了计算机专业英语,高中毕业的水平就可以轻松的阅读计算机文档了.如果你的英语实在太差了,连最简单的计算机英语文档都看不懂,那么在学习linux的同时,请赶紧学习英语.也许你说,你可以看翻译的文档,当我还是一个菜菜鸟的时候,也是这样认为的.但是,后来才发现,如果你想深入学习linux,看不懂因为文档实在是太难了.写的最好的,最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的.即便是非英语国家的人发布技术文档,也都首先翻译成英语在国际学术杂志和网络上发表.你去看看各大软硬件生产商的官方网站,有哪一个不是用英语作为其主站的? 长期用windows的人会很不习惯这一点,装个软件还要看半天文档,应为windows用起来实在太简单了.但是如果你想学习linux就必需学会看各种文档,而大部分的文档都是用英语写的.我发现很多人甚至连man文档都不会看,有什么命令不会用了就跑到论坛上来问,还装出一副可怜相,乞讨一个命令的用法.有这些时间还不如自己看看man文档,即使你一个一个单词的翻译成中文再自己看都比问别人强,因为别人的回答再怎么详尽都比不上man文档详尽.安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么.否则,说明文档都不看,结果出了问题再来找答案反而浪费时间! 古人说欲速则不达就是这个道理!

6,忘记windows的思维方式

思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度.现在很多人用linux.但是,他们用linux的方式完全是 windows的那一套方式.骨子里都是windows的思想.这样是不能领悟linux的精髓体验不到他的优越性的.我前几天看到一个朋友要把刚装了不到2天的mandrake 10 删除掉,我问他为什么,他说太慢了,受不了,还是用windows快.然后我留意了一下他用linux的方式,他的所有操作都带着windows的影子. 他连最基本的删除,移动文件这样的操作都要用鼠标,这样当然慢了!最后我只好说,你删除吧,你不适合用linux,linux不是这样用的.各位可以去看看那些linux高级用户,他们是怎样操作的.通常他们都是在X上开一个xterm或者rxvt终端,80%以上的操作都在这个终端下用命令完成,因为 linux的命令行十分强大,速度也十分快,简单的几个命令的组合就能完成非常复杂的操作.举一个例子:linux的常用命令find,去看看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会了就对他爱不释手.他的功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和 grep命令,那么他能完成非常复杂的操作,如果同样的操作你用图形界面的工具来完成,恐怕要多花十几陪的时间.因此linux高手经常会说:如果没有 find和grep我们还怎么活.但是现在大部分的linux初级用户受到windows影响都喜欢用图形界面的工具来完成一些基本的操作,我并不是说图形界面不好.只是由于linux和windows设计思想的不同他们的操作方式也有很大不同.在windows下用图形界面操作会比敲命令快,但是 linux是一个命令行组成的操作系统,他的精髓在命令行! 无论图形界面发展到什么水平这个原理是不会变的!

7,入门以后多学命令

当你看完了一两本入门书籍后就应该扩充自己的知识,多学习linux命令,但是不要在初学阶段就系统的学习linux命令,初学阶段只要学会书上提到过的命令就可以了.单靠学习各种命令而成为高手是不可能的,但不会命令而成为高手也是不可能的.这就好比学英语,什么语法都不懂,只捧着单词手册背单词是学不会英语的,但是没有单词词汇量英语水平也提不高的.

在linux中学习命令的最好办法是学习bash脚本编程.bash脚本比起其他语言来学习简单,但是功能却十分强大.通过学习bash编程,能让你掌握大量的linux命令.另外,买一本命令参考手册是必要的,遇到不知道怎么用的命令可以随时查询,这要比察man文档快.特别适合英语不好,看不懂man文档的人.

在linux中,命令可分为系统基本命令和应用程序命令.系统基本命令是所有的unix类系统都支持的命令,走到哪都不变,只要是unix类系统上就肯定有.比如ls,rm,rmdir,cp,cd,mv,cat 等等.这样的基本命令大约有200个,这些命令是一定要掌握的,我买了一本< redhat 7 指令参考手册>这本书非常好,他根据命令的常用指数分类,标明3颗星的为最常用命令,一定要掌握,两颗星的其次,1颗星的只要知道一下就可以了虽然现在都已经FC3了,但是经典的UNIX基本命令几十年来都没有变过!另外有些命令是linux特有的或者是某一个应用程序的可执行文件比如xmms播放器.这些只要知道就可以了,不知道也无所谓.有些命令比较少用,因此通常都记不住他的用法,对于这些命令至少要知道有这个命令,脑子里有印象,需要用的时候察一下手册就可以了,但是决不能不知道这个命令的存在!

8,学会管理系统

等到有了基本知识,也掌握了一定量的命令用法后,就可以进一步学习管理系统.这些内容入门书上会有,但是不会很深入.要深入的学习系统管理,就要去买一本类似之类的书.认真的看书并做实验,可以让你很快的进步.学习配置各种网络服务器,用linux搭建网络,这些都是学习linux系统管理和网络管理的好方法. 到了这个阶段就可以经常上网察察资料,看发布软件的官方网站文档和FAQ,看看论坛精华区文章.但是不能本末倒置,多看书还是根本.书籍和官方文档可以让你系统的学习,但是论坛可以让你学到一些小知识,小技巧.我本人也经常到论坛上来看看,因为即便是一个新手,也可能会发现一些你所不知道的小技巧,看论坛可以学到这些小技巧.但是我看文档和看论坛的时间比不会小于4:1 . 可以把平时积累的问题一次在论坛上发问. 但是初学的时候不要频繁上论坛,因为你要问的问题都在书上写着,耐心一点,你很快就能看到了.

9,了解系统结构

等你有了一定的系统管理知识,知道了/etc下那些配置文件有什么用,知道了一般的网络服务器如何配置后,就可以去了解系统结构了. 了解系统结构不是要你去看什么文件夹放什么内容,而是要学习一些原理性的东西.比如系统是如何引导的,引导后启动了那些东西.系统中哪些是最基本的库文件,有什么用等等.学习系统结构的最好方法是自己做一个linux系统,再也没有什么能比自己做一个linux系统更能学习系统结构的了.LFS (linux from strach)可以教你从源代码自己编译一个系统.通过自己编译一个系统,你就可以了结linux系统结构,知道哪些文件是干什么用的,以及他们如何协调工作.当然,在你达到LFS水平之前还有很多事情要做,比如学会如何编译安装源代码发布的软件和编译新的内核等等.到了LFS水平,那么在大多数 linux论坛上你就可以被人称作"高手"了!到了这个地步,就相当于一撞大楼已经基本建好,但是还需要粉刷和装修,真正的细活还在后面!

永远记住天外有天,人外有人的道理.即便有了LFS水平,在那些搞linux系统开发,通读过linux内核代码的人看来你还是一个菜鸟.因此, 请时刻保持虚心的态度.即便是在 论坛上只有一颗星级别的人,也有可能是一个潜在的,真正的高手! 大多数真正的高手平时都在搞研发工作,哪里有时间上论坛啊! 倒是有很多大学还没毕业的学生,整天混在论坛上.

10,学习专业课程

如果你不是计算机专业的,而想把linux学好,就一定要学习专业课程.学习微机原理,操作系统,计算机网络等等专业课程是必需的.为什么同时开始学习 linux,有些人学的非常快,不到半年就成了高手,有些人玩来玩去还玩不出名堂,玩了一两年还是菜鸟? 因为那些学得快的人有基础,他们都学过专业课程.同样一篇文档,没有基础的人可能看了三遍还不明白,基础扎实的眼睛扫两下就懂了! 这就是专业和非专业的差别! 因此,要想达到更高的境界就一定要学习基础的专业课程.

11,保持虚心学习的态度

我想再重复一遍天外有天,人外有人的道理!
保持虚心的学习态度不仅能让你学到更多知识,而且会让你受人尊重.

在linux 的世界里,如果你想靠混论坛,发水贴,换几颗星星增加一下级别,然后再面对菜鸟说几句牛哄哄的话来赢得别人的尊重是不可能的.即便是一个刚入门的菜鸟,也能分辨你回答问题的质量,从而知道你到底有多少水平. 另外,当你成了"高手"的时候,你也能从"菜鸟"那里学到很多知识.因为有很多问题是你从来没有想过的,认为自己肯定会的,但是实际遇到的时候会有困难. 而"菜鸟"们往往更善于发现这类问题.这就是中国人常说的"教学相长"!

在linux的世界里,越是水平高的人越谦虚,因为他们知道自己还有很多不知道的,而那些半瓶水就想晃荡的人反而自以为是,因为他们还不知道自己还有很多不知道的! 去看看,www.linuxforum.net 嵌入式开发和UNIX版块的牛人,他们很多都是有过好几年linux方面的工作经验,精通linux和unix的好手,但是每个人都保持着非常谦逊的态度,这些人是值得尊敬的

 

 

 

二、

当前社会对Linux人才需求+谈linux学习方法(转贴)
2006年11月30日 星期四 10:08

--=当前社会对Linux人才的需求 =--


大家好, 我是ChinaUnix论坛的Linux版的斑竹sakiulagi。 首先感谢这么多朋友来参加CU的活动。 我讲的这个题目太大。 能谈出来的只是我个人看到的一些事情和自己学习Linux中的一些想法和大家共享一下, 不太可能说能给大家指出一条赚钱的金光大道, 那我就是在讲传销,而不是在讲Linux了。 讲的过程中有什么错误希望大家指出。 有什么问题我们都可以讨论。


【1】 linux的发展方向和主要应用领域
企业级
不同类型服务器的细分, 其实就是安装了不同的服务, 然后针对这个服务对系统性能进行有针对性的调整。
集群/大规模的科学运算
Linux的优点: 低成本,高可靠性; 缺点: 专业人才少。
桌面产品
发展方向: 办公,政府,大公司采购
Microsoft的主要竞争对手, 政府策略
嵌入式系统
消费领域
电子消费产品

【2】 需要的技术型人才
设备驱动
Linux对各种设备的支持仍然落后于MS。 这个很多因素造成的,不过也留下了一个很大的缺口。
网络安全
大量的网络服务器的应用对安全的要求,包括服务器本身和其他的网络设备如路由器,防火墙。
OA
办公产品的开发,设计
系统管理
Linux服务器的日常维护,性能调整,系统架设
嵌入式开发
各种嵌入式系统上的开发。


【3】关注的基础知识
-操作系统 / Linux内核 的基础知识
基本的概念是最重要的, 比如很多网友问我的机器变慢怎么办? 其实就是你的某些资源被消耗殆尽了, 不外乎是首先检查瓶颈, 比如那个应用把系统内存吃光了。 如果操作系统好好学习一下, 很容易理解Linux, 甚至是一般的操作系统的很多看起来很深刻的东西。 内核不是什么高深的东西。 你在操作系统课上学的pv操作都可以看到, 一些UNIX的基础知识也很重要, 比如什么是文件系统, 什么是mount, 什么是设备文件, 甚至什么是linux? 分发版? 还是内核? 如果我说我的系统是Linux 9.0的, 这个说法确切么?
很多东西没有那么神秘的,关键是你的基础是不是够好。
-数据结构和算法
这个对开发人员尤其重要。不要管什么C/C++, java, 等等…… 语言不是最重要的,工具也不是最重要的,关键是你的思想。 如果你是一个开发人员, 那么这个基础就更是你的必修课了。因为学习数据结构和算法的过程就是培养一个人逻辑思维的过程, 我在这里不讲软件工程什么的,如果你的数据结构和算法都学不好,还怎么学习Design Pattern呢?
管理人员也是一样, 比如一个管理员不懂数据结构,可能只能依靠benchmark来了解文件系统性能,否则根据reiser4的dancing tree算法, 我们又可以多了一些根据来判断, 这个设计到底好在哪里?我相信任何一个Administrator都不会拒绝对自己的系统有更深入的理解的。
-C/汇编编程
在编程的思想和算法都已经学好的前提下,由于历史上UNIX和Linux都是用C写的。 大家也只好多学习一些C和汇编了。 如果Linux是用另一个语言写的,并且这个语言很流行,那么我可能就推荐另一个语言了。 这个是最基本的工具,能把你的思想变成现实的工具。是你和Linux系统的交流的共同语言。
即使是管理人员也要用, 总不能所有的软件都用rpm装吧? 再说对任何一件事物, 多了解一些内部的运行机制可以更好的理解它, 这一点大家可以同意吧?另外,如果没有一点编程知识的话,我觉得要维护一个安全的系统也是有一些难度的,如果了解了系统内部运作的机制,才能更好知道你的系统的漏洞在哪里,最简单的例子,一点编程不学,恐怕很难理解什么是buffer overflow. 而且在没有任何编程基础的情况下, 要理解操作系统的很多知识也是会遇到困难的。
-图形界面开发(Java, GTK+, QT)
随着Linux向桌面应用的发展,图形界面编程的人才将会有更大的需求。无论是用java还是用C/C++, 其实很多时候二者是结合的。
-网络
现在的社会,单独的一台计算机是没有多少用处的,所有的计算机都在网络上。现在这么多作网络安全的机会, 如果要是把网络, 比如tcpip的基础知识好, 不但有利于自己的进一步的学习, 同时对自己的职业前途也不能不说是一个很好的推动。
-日常使用和维护
至少会用vi吧? 至少会一点简单的shell编程吧? 无论你是用命令行,还是用图行界面, 只要用的熟练, 能解决问题,就可以了。 否则日常的工作怎么开展?
-HA/HP 集群
如果有条件可以看一下,这个是Linux的另一个很好的应用方向。
-个人能力
分析问题,解决问题。(这个在下面还会谈)。
-语言能力
总要看英文资料的,能看多少看多少,不能逃避啊。 很多人讲英文我不行, 谁帮我翻译成中文的。 这样一个比去新东方上课便宜的多的, 对你的英文阅读能力很有帮助的机会被浪费了……

(上面讲的这些不只是针对还在读书的同学们说的, 即使是已经工作了的网友, 如果有志于开始学习Linux的话, 那么我觉得很多的基础知识都有必要好好读一下。在这里之所以强调基础知识的重要性, 是因为现在的令人眼花缭乱的新技术太多, 其实万变不离其宗, 最终还是要依靠这些最经典的知识基础。 我前两天又看了一下UNIX第三版的白皮书, 是70年代发表的。 里面定义了什么是一个目录, 这个定义和我们通常的定义有些区别, 但是对理解文件系统的结构却有着很好的帮助。 我不是搞学术研究的, 和很多朋友一样, 我也只能业余时间看看这些基础的东西, 但是仍然觉得很有帮助。)


【4】 简单谈一下linux的学习方法
-看书
了解基础知识以后才有交流的基础。 大家可以先到网上找些电子书。 不过我个人更推荐买一本便宜的纸板书看看, 对保护视力有好处。 越是开始的时候, 越要多看一些书, 千万不要看到超过一页的文章就放弃了, 很多厚书反复读过和实践过之后, 就会成为你能力飞跃的第一动力。
-善用网络资源,学会搜索。
遇到问题先google一下, 通常都会有收获。 另外, 网络上的手册很多。大家只要好好看一看,就方便的多。经常有朋友问很多操作上的问题, 以我用的最多的Redhat为例, 官方网站上有全套的安装, 使用, 定制, 各种指南。如果通读一次, 至少是日常的使用不会有什么太大的问题。 同时还能对redhat linux有一个很好的理解。
-Linux版和CU的资源介绍(一句话,精华索引)
经常有网友很不满: 你不直接告诉我, 装什么蒜? 虽然没有给你一块钱, 可是指出的道路是通向一个金库的! 如果不是真的到了生死攸关的时候, 能深入学习一些还是深入一些, 不要只是看着一个答案, 就可以了。 当然如果真的是急事, 那另当别论。
这里, 我再次郑重向大家再推荐我们版的几个置顶帖子。 一个是“Linux 一句话精彩问答”。 这个是我们的斑竹bjchenxu来整理的, 里面包含了我们班上大量网友的智慧。 里面可以找到很多很多的常见问题和疑难杂症的回答。 如果你看过了linux的入门书籍, 了解了最最基本的知识, 那么这个帖子是继续学习的最好的途径。 另一个帖子是以前的斑竹lnx300和现任斑竹好好先生整理的精华帖子索引, 很多比较复杂的问题在这里也可以找到答案。 这两个都不是大百科全书, 可是他是Linux版的所有网友和几位斑竹的劳动的成果, 希望对大家的学习能有所帮助。
-讲究论坛上的交流的方式方法。
多学习别人解决问题的方法。而不止是知道一个答案而已。
交流的技巧。 (热心互助,不要抱怨。老手不要看不起新手,大家都是新手过来的,如果能帮助就帮助一下,不要冷嘲热讽;新手不要不耐烦,大家都是义工,并没有什么义务一定要回答谁的问题。互相指责不解决任何问题,真正的更好利用CU这个大平台才是最终的解决方法。)
-多多动手,多多实践
我在开始学习的时候,把系统里所有的可执行文件的manual page都看一遍, 然后把每个能试验的命令都运行一次。 我觉得只有试验才能得到第一手的资料。
-认真学习英文
中英文的资料各有各的有缺点,但有一点是肯定的。多看懂一些资料总是好的。而且很多时候还是英文的资料更全面, 更丰富一些。 比如关于多系统引导, GNU的网站上grub的手册是还是比较全面而细致的, 语言也简练的很。 GNU网站上的其他资料也很丰富。国内也由一些中文手册的翻译计划。

posted @ 2011-11-02 10:10 狄浩 阅读(428) | 评论 (0)编辑 收藏

最近几个版本的Eclipse默认鼠标移动到方法、属性等上面会出现悬浮窗提示,但鼠标下移后不会消失,编写代码的时候很烦人。

设置preferences-->General-->Editors-->Text Editors-->

when mouse moved into hover:选择Close hover

posted @ 2011-10-12 16:17 狄浩 阅读(1135) | 评论 (0)编辑 收藏

TRANSLATE(A,B,C) 两种情况:
1.B中相应位置在C中的对应的位置有相应的字符,如B的长度比C短或者B的长度和C相等,A中字符进行一一替换;
2.B的长度比C长,B中多出的部分,如果A中含有该字符,则将该字符从A中删除;
posted @ 2011-09-15 17:38 狄浩 阅读(507) | 评论 (0)编辑 收藏

SQL中如何把列中的行转换成列

2010-11-22 01:50

SQL code/*
普通行列转换

假设有张学生成绩表(tb)如下:
Name Subject Result
张三 语文  74
张三 数学  83
张三 物理  93
李四 语文  74
李四 数学  84
李四 物理  94
*/

-------------------------------------------------------------------------
/*
想变成
姓名       语文        数学        物理      
---------- ----------- ----------- -----------
李四       74       84       94
张三       74       83       93
*/

create table tb
(
Name varchar(10) ,
Subject varchar(10) ,
Result   int
)

insert into tb(Name , Subject , Result) values('
张三' , '语文' , 74)
insert into tb(Name , Subject , Result) values('
张三' , '数学' , 83)
insert into tb(Name , Subject , Result) values('
张三' , '物理' , 93)
insert into tb(Name , Subject , Result) values('
李四' , '语文' , 74)
insert into tb(Name , Subject , Result) values('
李四' , '数学' , 84)
insert into tb(Name , Subject , Result) values('
李四' , '物理' , 94)
go

--
静态SQL,指subject只有语文、数学、物理这三门课程。
select name
姓名,
   max(case subject when '
语文' then result else 0 end) 语文,
   max(case subject when '
数学' then result else 0 end) 数学,
   max(case subject when '
物理' then result else 0 end) 物理
from tb
group by name
/*
姓名       语文        数学        物理      
---------- ----------- ----------- -----------
李四       74       84       94
张三       74       83       93
*/

--
动态SQL,指subject不止语文、数学、物理这三门课程。
declare @sql varchar(8000)
set @sql = 'select Name as ' + '
姓名'
select @sql = @sql + ' , max(case Subject when ''' + Subject + ''' then Result else 0 end) [' + Subject + ']'
from (select distinct Subject from tb) as a
set @sql = @sql + ' from tb group by name'
exec(@sql)

 

posted @ 2011-09-14 17:23 狄浩 阅读(428) | 评论 (0)编辑 收藏