显示标签为“Linux”的博文。显示所有博文
显示标签为“Linux”的博文。显示所有博文

2009年5月7日星期四

Linux系统信息查看命令

系统
# uname -a               # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue   # 查看操作系统版本
# cat /proc/cpuinfo      # 查看CPU信息
# hostname               # 查看计算机名
# lspci -tv              # 列出所有PCI设备
# lsusb -tv              # 列出所有USB设备
# lsmod                  # 列出加载的内核模块
# env                    # 查看环境变量

资源
# free -m                # 查看内存使用量和交换区使用量
# df -h                  # 查看各分区使用情况
# du -sh <目录名>        # 查看指定目录的大小
# grep MemTotal /proc/meminfo   # 查看内存总量
# grep MemFree /proc/meminfo    # 查看空闲内存量
# uptime                 # 查看系统运行时间、用户数、负载
# cat /proc/loadavg      # 查看系统负载

磁盘和分区
# mount | column -t      # 查看挂接的分区状态
# fdisk -l               # 查看所有分区
# swapon -s              # 查看所有交换分区
# hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE       # 查看启动时IDE设备检测状况

网络
# ifconfig               # 查看所有网络接口的属性
# iptables -L            # 查看防火墙设置
# route -n               # 查看路由表
# netstat -lntp          # 查看所有监听端口
# netstat -antp          # 查看所有已经建立的连接
# netstat -s             # 查看网络统计信息

进程
# ps -ef                 # 查看所有进程
# top                    # 实时显示进程状态

用户
# w                      # 查看活动用户
# id <用户名>            # 查看指定用户信息
# last                   # 查看用户登录日志
# cut -d: -f1 /etc/passwd   # 查看系统所有用户
# cut -d: -f1 /etc/group    # 查看系统所有组
# crontab -l             # 查看当前用户的计划任务

服务
# chkconfig --list       # 列出所有系统服务
# chkconfig --list | grep on    # 列出所有启动的系统服务

程序
# rpm -qa                # 查看所有安装的软件包

2009年5月6日星期三

网络命令netstat

先记住两个常用的用法
netstat -a
netstat -an

注意只关心listening的就好了
-an会只列出ip和port, -a有些可能只列出service name
service name到...drivers/etc/services里去找对应的端口

2009年2月20日星期五

Linux之FTP

ftp 命令表
序号 命 令 功 能
1 ! 执行本地 shell 命令
2 $ 执行宏功能
3 account 发送帐号口令到远程服务器
4 append 附加到文件中
5 ascii 设置 ASCII 码传输类型
6 bell 命令完成时响铃
7 binaey 设置二进制码传输类型
8 bye 结束并退出 ftp
9 case 触发远程文件名大小写变化功能
10 cd 改变远程工作目录
11 cdup 把远程工作目录改为其父目录
12 close 结束 ftp
13 cr 触发回车换行功能
14 delete 删除远程文件
15 debug 触发调试方式
16 dir 列远程目录
17 disconnect 结束 ftp
18 form 设置文件传输格式
19 get 取文件
20 glob 触发本地文件名元字母扩展功能
21 hash 为每个传输缓区触发#号打印功能
22 help 显示求助信息
23 lcd 改变本地工作目录
24 ls 列远程工作目录内容
25 macdef 定义宏功能
26 mdelete 删除远程主机上的多个文件
27 mdir 列多个远程目录的内容
28 mget 取多个文件
29 mkdir 在远程主机上建新目录
30 mls 列多个远程目录的内容
31 mode 设置文件传输方式
32 mput 发送多个文件
33 nmap 设置或取消文件名映射机制
34 ntrans 设置或取消文件名字符变换机制
35 open 连接远程主机
36 prompt 触发交互提示功能
37 proxy 在辅助控制连接上执行一条 ftp 命令
38 put 发送一个文件
39 pwd 显示远程机器上的工作目录
40 quit 结束并退出 ftp
41 quote 发送任意 ftp 命令
42 recv 取文件
43 remotehelp 取远程主机的求助信息
44 rename 重新命名远程文件
45 reset 清除应答队列
46 rmdir 删除远程主机的一个目录
47 runique 触发用本地唯一文件名存储功能
48 send 发送一个文件
49 sendport 为每个数据连接触发使用 PORT
50 status 显示当前状态
51 struct 设置文件传输结构
52 sunique 触发远程唯一主机文件存储功能
53 tenex 设置 tenex 文件传输类型
54 trace 触发分组跟踪功能
55 type 设置文件传输类型
56 user 发送新的用户信息
57 verbose 触发 verbose 方式
58 xmkdir 生成远程主机目录
59 xpwd 显示远程主机工作目录
60 xrmdir 删除远程主机目录
61 ? 显示本地 ftp 求助信息
不同的系统,上述命令可能有所差异,可用“?”获得帮助!

2009年2月16日星期一

Shell脚本

参考:http://www.gbunix.com/htmldata/2005_04/14/18/article_1149_1.html

1.Linux中有好多中不同的shell,但是通常我们使用bash.
程序必须以下面的行开始(必须方在文件的第一行):
#!/bin/sh
符号#!用来告诉系统它后面的参数是用来执行该文件的程序。

2.当编辑好脚本时,如果要执行该脚本,还必须使其可执行。
chmod +x filename

3.注释,
在进行shell编程时,以#开头的句子表示注释


4.
变量

在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写:

变量名=值

取出变量值可以加一个美元符号($)在变量前面, 在字符串里用${a}

2009年2月11日星期三

Linux之export和shell的关系

参考:http://doc.linuxpk.com/3862.html
摘录要点:
0、export是将自定义变量变成系统环境变量
1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出;
2、一个shell中的系统环境变量才会被复制到子shell中 (用export定义的变量);
3、一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回 到父shell中)。
4、不用export定义的变量只对该shell有效,对子shell也是无效的。
5、一个脚本直接执行和用source执行不一样:直接执行一个脚本文件是在一个子shell中运行的,而source则是在当前shell环境中运行的

Linux之profile文件zz

对整个生效的
etc/profile
对根的宿主生效
/root/.bash_profile
对普通用户生效的
/home/abc/.bash_profile

Linux之Source命令zz

Source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录
用法:source filename 或 . filename

还有一个用法,执行多个命令,有点类似shell脚本,参考:http://tech.ccidnet.com/art/305/20080116/1343957_1.html

2009年2月10日星期二

Linux之环境变量

方法1:修改/etc/profile

(1)用文本编辑器打开/etc/profile

(2)在profile文件末尾加入:

JAVA_HOME=/usr/share/jdk1.5.0_05

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

export PATH

export CLASSPATH

(3)重新登录


方法2:直接用export

只需在shell终端执行下列命令(换个shell就失效了):

export JAVA_HOME=/usr/share/jdk1.5.0_05

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

2009年2月3日星期二

Linux之chkconfig(zz)

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息

列出系统所有的服务启动情况:
# chkconfig –list

想列出mysqld服务设置情况:
#chkconfig –list mysqld

设定mysqld在等级3和5为开机运行服务:
# chkconfig –level 35 mysqld on
–level 35表示操作只在等级3和5执行,on表示启动,off表示关闭

设定mysqld在各等级为on:
# chkconfig mysqld on
“各等级”包括2、3、4、5等级
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动

如何增加一个服务:
首先,服务脚本必须存放在/etc/ini.d/目录下;
其次,需要用chkconfig –add servicename来在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了。
最后,你就可以上面教的方法修改服务的默认启动等级了。

删除一个服务:
# chkconfig –del servicename

2009年2月2日星期一

Linux之用户和组

参考文章:http://fedora.linuxsir.org/main/?q=node/91

1. User
1.1 配置文件
/etc/passwd 注:用户(user)的配置文件;
/etc/shadow 注:用户(user)影子口令文件;

1.2 常用命令
useradd/adduser 注:添加用户
passwd 注:为用户设置密码
usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用户组
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user)
whoiam 查看当前用户
groups 查看当前用户所在的组


2. Group
2.1 配置文件
/etc/group 注:用户组(group)配置文件;
/etc/gshadow 注:用户组(group)的影子文件;

2.2 常用命令
groupadd 注:添加用户组;
groupdel 注:删除用户组;
groupmod 注:修改用户组信息
groups 注:显示用户所属的用户组

2009年1月20日星期二

Linux之SVN

今天只是勉强装上了SVN,但是并没有连通,哎,下次再来
原帖:http://www.cnblogs.com/lansh/archive/2008/02/14/1068999.html

按原帖安装会遇到点麻烦,下面是我修正过的

1. svn服务器安装

操作系统: Redhat Linux AS4

安装包获取:
下载http://subversion.tigris.org/downloads/subversion-1.4.0.tar.gz和http: //subversion.tigris.org/downloads/subversion-deps-1.4.0.tar.gz。

编译:
以root用户登录。
将subversion-1.4.0.tar.gz和subversion-deps-1.4.0.tar.gz传到服务器。

tar xfvz subversion-1.4.0.tar.gz
tar xfvz subversion-deps-1.4.0.tar.gz
cd subversion-1.4.0
./configure --prefix=/opt/svn --without-berkeley-db –with-zlib
(注:以svnserve方式运行,不加apache编译参数。以fsfs格式存储版本库,不编译berkeley-db)
make clean
make
make install

make时候可能会出错,需要到更改 neon/src/Makefile中的
CFLAGS = -fPIC -g -02

vi /etc/profile,在/etc/profile最后加入:
PATH=$PATH:/opt/svn/bin
export PATH

测试:
svnserve –version

如果显示如下,安装成功:
svnserve, version 1.4.0 (r21228)
compiled Oct 12 2006, 10:18:56

Copyright (C) 2000-2006 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository back-end (FS) modules are available:

* fs_fs : Module for working with a plain file (FSFS) repository.

2. svn配置
建立版本库目录,可建多个:
mkdir -p /opt/svndata/repos1
mkdir -p /opt/svndata/repos2

建立版本库:
svnadmin create /opt/svndata/repos1
svnadmin create /opt/svndata/repos2

修改版本库配置文件:
版本库1:
vi /opt/svndata/repos1/conf/svnserve.conf

内容修改为:
[general]
anon-access = none
auth-access = write
password-db = /opt/svn/conf/pwd.conf
authz-db = /opt/svn/conf/authz.conf
realm = repos1

版本库2:
vi /opt/svndata/repos2/conf/svnserve.conf

内容修改为:
[general]
anon-access = none
auth-access = write
password-db = /opt/svn/conf/pwd.conf
authz-db = /opt/svn/conf/authz.conf
realm = repos2

即除realm = repos2外,其他与版本库1配置文件完全相同。如果有更多的版本库,依此类推。

配置允许访问的用户:
vi /opt/svn/conf/pwd.conf

为了简化配置,2个版本库共用1个用户配置文件。如有必要,也可以分开。

注意:对用户配置文件的修改立即生效,不必重启svn。

文件格式如下:
[users]
<用户1> = <密码1>
<用户2> = <密码2>

其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。示例:
[users]
alan = password
king = hello

配置用户访问权限:
vi /opt/svn/conf/authz.conf

为了简化配置,3个版本库共用1个权限配置文件/opt/svn/conf/pwd.conf。如有必要,也可以分开。文件中定义用户组和版本库目录权限。

注意:
* 权限配置文件中出现的用户名必须已在用户配置文件中定义。
* 对权限配置文件的修改立即生效,不必重启svn。

用户组格式:
[groups]
<用户组名> = <用户1>,<用户2>
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。

版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>

其中,方框号内部分可以有多种写法:
/,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/opt/svndata。这样,/就是表示对全部版本库设置权限。
repos1:/,表示对版本库1设置权限
repos2:/occi, ,表示对版本库2中的occi项目设置权限
repos2:/occi/aaa, ,表示对版本库2中的occi项目的aaa目录设置权限

权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。

示例:
[groups]
admin = alan

[/]
@admin = rw

[repos1:/occi/aaa]
king = rw

[repos2:/pass]
king =

删除无用文件:
rm /opt/svndata/repos1/conf/authz
rm /opt/svndata/repos1/conf/passwd
rm /opt/svndata/repos2/conf/authz
rm /opt/svndata/repos2/conf/passwd

3. 启动svn
建立启动svn的用户:
useradd svn
passwd svn
根据提示为用户svn设置密码

允许用户svn访问版本库:
chown –R svn:svn /opt/svndata
chown –R svn:svn /opt/data

启动svn:
su - svn -c "svnserve -d --listen-port 9999 -r /opt/svndata"

其中:
su – svn表示以用户svn的身份启动svn
-d表示以daemon方式(后台运行)运行
--listen-port 9999表示使用9999端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root权限
-r /opt/svndata指定根目录是/opt/svndata

检查:
ps –ef|grep svnserve

如果显示如下,即为启动成功:
svn    6941   1 0 15:07 ?    00:00:00 svnserve -d --listen-port 9999 -r /opt/svndata

4. 以服务方式启动svn

在文件/etc/services
添加一行:
svn 3690/tcp # SVN
在文件夹/etc/xinetd.d/创建文件svn,内容为
service vnc
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/local/bin/svnserve
server_args = -i -r /opt/svndata
}
运行/etc/rc.d/init.d/xinetd restart
使上面的配置生效。

Linux之CVS

今天装SVN失败,还是装了CVS
原帖:http://www.chinaitpower.com/A/2003-12-22/66055.html
下面只摘录出安装过程:

首先确保系统安装有cvs:
[root@mail xinetd.d]# rpm -qa|grep cvs
cvs-1.11.1p1-3
如果命令输出类似于上面的输出则说明系统已经安装有cvs,否则就需要从安装光盘中安装cvs的rpm包。

一 创建CVS属主用户:
# useradd -d /cvsroot cvs
# chmod 771 /cv sroot

二、建立CVS仓库(初始化cvs)

# su cvs
$ cvs -d /cvsroot init
$exit
#

四、启动cvs服务器

在/etc/xinetd.d/目录下创建文件cvspserver,内容如下:
# default: on
# description: The cvs server sessions;

service cvspserver
{
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/cvsroot pserver
log_on_failure += USERID
only_from = 192.168.0.0/24
}
其中only_from是用来限制访问的,可以根据实际情况不要或者修改。
修改该文件权限:
# chmod 644 cvspserver
然后重新启动xinetd:
# /etc/rc.d/init.d/xined restart
然后察看cvs服务器是否已经运行:
[root@mail xinetd.d]# netstat -lnp|grep 2401
tcp 0 0 0.0.0.0:2401 0.0.0.0:* LISTEN 7866/xinetd
则说明cvs服务器已经运行。

五、创建用来访问cvs的用户

前面创建的cvs用户是cvs仓库管理用户,而为了让用户访问则还需要一个访问用户:
# useradd cvspub
# usemod -G cvs cvspub
这里添加了一个用户cvspub,并且将该用户添加到cvs组中。

2009年1月17日星期六

Linux之权限

参考:http://linux.chinaitlab.com/safe/38178.html

1. 每个文件属于一个用户和一个组, 这是 Linux 中权限模型的核心

2. ls -l 完整列出文件或者目录信息,可以看到下面的
drwxr-xr-x 6 root root 4096 2008-12-25 22:51 windows

2.1 首字符d表示目录, 其他可能的首字符:-常规文件, l符号链接, c字符专门设备文件, b块专门设备文件, p先进先出, s套接字
2.2 第一个3元组rwx表示文件所有者有读写执行的权限
第二个3元组r-x表示文件所有组有读和执行的权限
第二个3元组r-x表示文件其他用户有读和执行的权限
2.3 6代表链接数
2.4 root root表示所有者为root, 所有组为root

3. 改变文件属性和权限的3个命令
chown, 改所有者,只有root可以用
chgrp, 改所有组
chmod, 改权限

4. 数字模式
  rwx 7
  rw- 6
  r-x 5
  r-- 4
  -wx 3
  -w- 2
  --x 1
  --- 0

所以777 == rwxrwxrwx
0777这种4位权限的第一位数用来设置 suid sgid sticky位, 他的模式数字 on on on 7 on on off 6 on off on 5 on off off 4 off on on 3 off on off 2 off off on 1 off off off 0

5. umask
当一个进程创建一个文件时,会给他一个默认参考权限,他就是umask,
umask也是个命令来设置umask, umask 0077表示对此文件关闭0077权限,将确保组和其他用户对于新创建的文件绝对没有任何权限

6. suid/sgid
当设置了一个可执行程序的“suid”这一位时,它将代表可执行文件的所有者运行,而不是代表启动程序的人运行
看考suid/sgid的介绍

2009年1月15日星期四

Linux之系统目录

列几个常用的

/etc 放配置文件,里面有很多子目录针对各方面的配置,如group, user之类
/dev 放设备文件
/bin 放命令,这个容易
/sbin 也放命令,但放的都是高级命令,普通用户都用不了
/root root的home
/home 其他用户的home, 每个用户在里面都有个目录
/lib 放系统需要的库,好懂
/usr 就是linux下的Program Files, 用户安的很多都放在/usr/local
/var 包括系统一般运行时要改变的数据

2009年1月13日星期二

vi之三种模式

1. 命令行模式(command mode)

  进入vi之后,是处于「命令行模式(command mode)」, 在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,

2. 插入模式(Insert mode)

  只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

3). 底行模式(last line mode)

  一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,然后可以做以下事情:
: w filename (输入 「w filename」将文章以指定的文件名filename保存)
: wq (输入「wq」,存盘并退出vi)
: q! (输入q!, 不存盘强制退出vi)

Linux之find

功能虽然很强大,但先记住下面这个就够了

$find /opt/ -name "db2*" //在opt目录下找出db2开头的文件

2009年1月9日星期五

Linux之管道命令

其实就是一个 |
它表示左边的命令的输出是右边命令的输入
例如: ps -ef | grep db2*
当然一条命令还可能有更多|, 左边输入右边输出,这就是为啥叫管道

Linux之grep

grep其实就是一个查询工具,使用正则表达式
可以这么用
ls -al | grep sys* //列出sys开头的文件
也可以这么用
ps -ef | grep sys* //列出sys开头的进程

2009年1月7日星期三

Linux之查看当前用户

1. $who //就这么简单
2. $w //更简单
3. $whoami //yes, who am I
4. $who am i //真的可以啊
5. $logname
6. $last $last n //上次和上几次的用户
7. $tty //报告所有连接的设备

Linux之ps

#ps -ef //查看所有进程和详细信息

#ps -ef | grep db2 //查看db2的所有进程

//TODO 补充更多...