益友网(http://www.1uu2.com) 做linux用户的良师益友、linux操作系统命令教程

几个永远不要运行的危险Linux命令!

发表于 2009-09-06 00:05 浏览次数:880 次

文中列出的命令绝对不可以运行,即使你觉得很好奇也不行,除非你是在虚拟机上运行(出现问题你可以还原),因为它们会实实在在的破坏你的系统。所以不在root等高级管理权限下执行命令是很好的习惯。

关键字: | 分类: Linux常识 | 评论数: 0 | 阅读全文

Ubuntu与Debian的关系

发表于 2009-06-04 22:23 浏览次数:1,062 次

当今最热门的桌面Linux非Ubuntu莫属,它已经拥有数量众多的爱好者,已经成为PC用户的主流操作系统之一。尽管Ubuntu相对还比较年轻,但是它的前身却是拥有多年历史和经验的Debian项目,或者说它继承了Debian这个最古老、最具影响力的Linux发行版的优点。这两个最受欢迎的Linux发行版之间存在着密不可分的“血缘”关系。

关键字: , | 分类: Linux常识 | 评论数: 0 | 阅读全文

Linux操作系统上SSH远程访问工具的设置

发表于 2009-04-04 00:48 浏览次数:686 次

来源:赛迪网 作者:xiaoxin

SSH是一个Linux系统自带的远程互访的服务,双机的安装需要SSH的支持,并且需要配置使两台服务器之间可以直接互访而无需密码。因此安装双机前需要首先配置SSH,否则无法安装双机软件。

请按以下步骤设置SSH密钥。

root@GZFS2B:/root/.ssh/id_dsa.pub /root/.ssh/id_dsa.GZFS2B

系统提示是否继续安装,输入yes,并回车键确定。

提示输入密码,此时输入另外一台服务器(wxaipfs4)的Root用户密码,回车键确定。

cd /root/.ssh

cat id_dsa.GZFS2B >> authorized_keys2

在GZFS2B上执行以下命令。

scp root@GZFS2A:/root/.ssh/id_dsa.pub /root/.ssh/id_dsa.GZFS2A

cd /root/.ssh

cat id_dsa.GZFS2A >> authorized_keys2

步骤 3 在两台服务器上执行ssh命令。

如果还要输入密码才能登陆,就说明ssh信任还存在问题,需要删除/root/.ssh重新建立。

1.在GZFS2A上执行

ssh GZFS2B

2.在GZFS2B上执行

ssh GZFS2A

结束

关键字: | 分类: Linux常识 | 评论数: 0 | 阅读全文

关于Linux操作系统根文件系统的启动分析

发表于 2009-04-04 00:39 浏览次数:965 次

来源:赛迪网 作者:yan

一般的系统是先启动/sbin/init,但是也可通过启动参数指定init=来确定,如:我的系统就是制定的init=/linuxrc,因为文件系统是采用busybox的,而linuxrc。也是一个指向busybox的文件,不过不确认它指向具体哪个指令。不过可能是/sbin/init。

init进程的主要任务是按照inittab文件所提供的信息创建进程,由于进行系统初始化的那些进程都由init创建,所以init进程也称为系统初始化进程。

如我的inittab:

::sysinit:/etc/init.d/rcS

::respawn:-/bin/login

::restart:/sbin/init

::ctrlaltdel:/bin/reboot

::shutdown:/bin/umount -a -r

::shutdown:/sbin/swapoff -a

inittab的格式如下:

id:rstate:action:process

1.id字段是最多4个字符的字符串,用来唯一标志表项。

2.rstate(run state)字段定义该记录项被调用时的运行级别,rstate可以由一个或多个运行级别构成,也可以是空,空则代表运行级别0~6。当请求init改变运行级别时,那些rstate字段中不包括新运行级别的进程将收到SIGTERM警告信号,并且最后被杀死;只有a、b、c启动的命令外(a、b、c不是真正的运行级别)

3.action字段定义了该进程应该运行在何种状态下:

boot 在系统启动时运行,忽略runlevel

bootwait 在系统启动时运行,init等待进程完成。忽略runlevel

ctrlaltdel 当Ctrl+Alt+Del三个键同时按下时运行,把SIGINT信号发送给init。忽略 runlevel

initdefault 不要执行这个进程,它用于设置默认runlevel

kbrequest 当init从键盘中收到信号时运行。这里要求键盘组合符合KeyBoardSigral(参见/usr/share/doc/kbd-*关于键盘组合的文档)

off 禁止进入,因此该进程不运行

once 每一个runlevel级别运行一次

ondemand 当系统指定特定的运行级别A、B、C时运行

powerfail 当init收到SIGPWR信号时运行

powerokwait 当收到SIGPWD信号且/etc/文件中的电源状态包含OK时运行

powerwait 当收到SIGPWD信号,并且init等待进程结束时运行

respawn 不管何时终止都重新启动进程

sysinit 在运行boot或bootwait进程之前运行

wait 运行进程等待输入运行模式

process 字段包含init执行的进程,该进程采用的格式与在命令行下运行该进程的格式一样,

因此process字段都以该进程的名字开头,紧跟着是运行时,紧跟着是运行时要传递给该进程的参数。

比如/sbin/shutdown -t3 -r now,该进程在按下Ctrl+Alt+Del时执行,在命令行下也可以直接输入来重新启动系统。

4.Process字段中进程可以是任意的守候进程、可执行脚本或程序。

另外:在任何时候,可以在文件inittab中添加新的记录项,级别Q/q不改变当前的运行级别,重新检查inittab文件,可以通过命令init Q或init q使init进程立即重新读取并处理文件inittab.

他会先执行/etc/init.d/rcS

#! /bin/sh

/bin/mount -a

mdev -s

而mount -a会执行/etc/fstab

proc /proc proc defaults 0 0

none /tmp ramfs defaults 0 0

mdev /dev ramfs defaults 0 0

sysfs /sys sysfs defaults 0 0

挂载一些ramfs。

关键字: | 分类: Linux常识 | 评论数: 0 | 阅读全文

Linux limits.conf解释与应用

发表于 2009-04-04 00:38 浏览次数:1,783 次

来源:赛迪网 作者:fen

limits.conf的工作原理:

limits.conf的后端是这样工作的:limits.conf是pam_limits.so的配置文件,然后/etc/pam.d/下的应用程序调用pam_***.so模块。譬如说,当用户访问服务器,服务程序将请求发送到PAM模块,PAM模块根据服务名称在/etc/pam.d目录下选择一个对应的服务文件,然后根据服务文件的内容选择具体的PAM模块进行处理。

例:限制admin用户登录到sshd的服务不能超过2个

在/etc/pam.d/sshd 中添加 session required pam_limits.so

在/etc/security/limits.conf中添加 admin – maxlogins 2

查看应用程序能否被PAM支持,用ldd

limits.conf文件的参数

Limits.conf文件的参数可以设置成以下两种形式之一:

暂时地,适用于通过 ulimit 命令登录 shell 会话期间。

永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件之一(例如 ~/.profile),即特定于 shell 的用户资源文件;或者通过编辑 /etc/security/limits.conf。

1.core – 限制内核文件的大小

何谓core文件,当一个程序崩溃时,在进程当前工作目录的core文件中复制了该进程的存储图像。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。 core文件是个二进制文件,需要用相应的工具来分析程序崩溃时的内存映像。

系统默认core文件的大小为0,所以没有创建。可以用ulimit命令查看和修改core文件的大小。

$ulimit -c

0

$ ulimit -c 1000

$ ulimit -c

1000

-c 指定修改core文件的大小,1000指定了core文件大小。也可以对core文件的大小不做限制,如:

# ulimit -c unlimited

#ulimit -c

unlimited

如果想让修改永久生效,则需要修改配置文件,如 .bash_profile、/etc/profile或/etc/security/limits.conf。

2.nofile – 打开文件的最大数目

对于需要做许多套接字连接并使它们处于打开状态的应用程序而言,最好通过使用 ulimit –n,或者通过设置nofile 参数,为用户把文件描述符的数量设置得比默认值高一些。

关键字: | 分类: Linux常识 | 评论数: 0 | 阅读全文

Linux操作系统下机器温度监控与调整方法

发表于 2009-03-08 19:21 浏览次数:1,021 次

装tp-fancontrol,限制一下gpu的温度

ubuntuCPU的温度cat /proc/cpuinfo

显卡温度 有个sensor applet,装了都能显示

在终端里运行cpufreq-info查看CPU信息

sudo cpufreq-selector -c cpu号

或者 sudo cpufreq-set -c cpu号

选择要调整的CPU(因为你的电脑上可能不止一个CPU)

sudo cpufreq-selector -f 你所需要的频率

或者 sudo cpufreq-set -f 你所需要的频率

调整cpu频率,注意,此处的频率必须是以KHz为单位,并且是可以达到的频率(也就是用cpufreq-info查看到的各个频率)

也可以

sudo cpufreq-selecotr -g 模式

或者

suod cpufreq-set -g 模式

这里,模式就是执行cpufreq-info后看到的所支持的模式。

比如以下几种:powersave, userspace, ondemand, conservative, performance。

powersave,是无论如何都只会保持最低频率的所谓“省电”模式;

userspace,是自定义频率时的模式,这个是当你设定特定频率时自动转变的;

ondemand,一有cpu计算量的任务,就会立即达到最大频率运行,等执行完毕就立即回到最低频率;

conservative,翻译成保守的,也就是默认的模式,一般选择这个,会自动在频率上下限调整;

performance,顾名思义只注重效率,无论如何一直保持以最大频率运行。

工具:

lm-sensors sensors-applet

手动配置传感器sudo sensors-detect

查看添加的模块less /etc/modules

其他监控软件:

xsensors ksensors

gdesklets gkrellm

硬盘监控hddtemp

来源:赛迪网 作者:fen

关键字: , | 分类: Linux常识 | 评论数: 0 | 阅读全文

Linux实战命令之一:网络基本配置

发表于 2009-02-23 22:58 浏览次数:883 次

一、设置IP

我们可以为网卡设置固定的IP,也可设置一个用于测试的临时IP。要设置一个固定IP,可以通过命令setup和netconfig或通过修过配置文件来完成。

1、本例我们假设已配置了第1个网卡的IP,将为第2个网卡配置IP地址。过程如下:
[root@OracleOnLinux root]# cd /etc/sysconfig/network-scripts/   
[root@OracleOnLinux network-scripts]# ls    //查看当前目录中的文件,可以看到没有第2个网卡的配置文件
ifcfg-eth0      ifdown-ipv6  ifup          ifup-isdn    ifup-sit
ifcfg-lo        ifdown-isdn  ifup-aliases  ifup-plip    ifup-sl
ifdown          ifdown-post  ifup-cipcb    ifup-plusb   ifup-wireless
ifdown-aliases  ifdown-ppp   ifup-ippp     ifup-post    init.ipv6-global
ifdown-cipcb    ifdown-sit   ifup-ipv6     ifup-ppp     network-functions
ifdown-ippp     ifdown-sl    ifup-ipx      ifup-routes  network-functions-ipv6

[root@OracleOnLinux network-scripts]# cat ifcfg-eth0  //通过配置文件查看eth0的配置
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.154
NETMASK=255.255.255.0
GATEWAY=192.168.0.254

[root@OracleOnLinux network-scripts]# cp ifcfg-eth0 ifcfg-eth1  //拷贝一份以建立第二个网卡eth1的配置文件
[root@OracleOnLinux network-scripts]# vi ifcfg-eth1           //修改原配置文件为以下内容

DEVICE=eth1
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.0.254
NETMASK=255.255.255.0
GATEWAY=172.16.0.1

~
“ifcfg-eth1″ [已转换] 6L, 101C 已写入                         
[root@OracleOnLinux network-scripts]# service network restart     //重启网络服务,使修改生效
正在关闭接口 eth0: [  确定  ]
正在关闭接口 eth1: [  确定  ]
关闭环回接口: [  确定  ]
设置网络参数: [  确定  ]
弹出环回接口: [  确定  ]
弹出界面 eth0: [  确定  ]
弹出界面 eth1: [  确定  ]

[root@OracleOnLinux network-scripts]# ifconfig   //查看当前IP的配置,可见第二个网卡的IP已配置成功
eth0      Link encap:Ethernet  HWaddr 00:0C:29:2E:70:80  
          inet addr:192.168.0.154  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:963 errors:0 dropped:0 overruns:0 frame:0
          TX packets:664 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:87678 (85.6 Kb)  TX bytes:67862 (66.2 Kb)
          Interrupt:10 Base address:0×1080

[root@OracleOnLinux network-scripts]# ifconfig | grep inet   //只查看IP部分
          inet addr:192.168.0.154  Bcast:192.168.0.255  Mask:255.255.255.0
          inet addr:172.16.0.254  Bcast:172.16.0.255  Mask:255.255.255.0
          inet addr:127.0.0.1  Mask:255.0.0.0

eth1      Link encap:Ethernet  HWaddr 00:0C:29:2E:70:8A  
          inet addr:172.16.0.254  Bcast:172.16.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:192 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:15035 (14.6 Kb)  TX bytes:168 (168.0 b)
          Interrupt:9 Base address:0×1400

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:20 errors:0 dropped:0 overruns:0 frame:0
          TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1618 (1.5 Kb)  TX bytes:1618 (1.5 Kb)

2、现在我们来设置一个临时用于测试的IP
[root@OracleOnLinux network-scripts]# ifconfig eth0:1 10.0.0.254 netmask 255.255.255.0    //对eth0再分配一个临时IP
[root@OracleOnLinux network-scripts]# ifconfig | more
eth0      Link encap:Ethernet  HWaddr 00:0C:29:2E:70:80  
          inet addr:192.168.0.154  Bcast:192.168.0.255  Mask:255.255.255.0
        ……
      //可见临时IP已设置好
          inet addr:10.0.0.254  Bcast:10.255.255.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:269 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:20922 (20.4 Kb)  TX bytes:168 (168.0 b)
          Interrupt:10 Base address:0×1080

eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:2E:70:80    

eth1      Link encap:Ethernet  HWaddr 00:0C:29:2E:70:8A  
          inet addr:172.16.0.254  Bcast:172.16.0.255  Mask:255.255.255.0
         ……

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          ……

[root@OracleOnLinux network-scripts]# service network restart  //重启网络服务
[root@OracleOnLinux network-scripts]# ifconfig | more   //再次查看设置的临时IP已消失
eth0      Link encap:Ethernet  HWaddr 00:0C:29:2E:70:80  
          inet addr:192.168.0.154  Bcast:192.168.0.255  Mask:255.255.255.0
        ……

eth1      Link encap:Ethernet  HWaddr 00:0C:29:2E:70:8A  
          inet addr:172.16.0.254  Bcast:172.16.0.255  Mask:255.255.255.0
         ……

===================================================================================================
二、设置路由

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          ……

1、查看本地路由
[root@linux-tys root]# netstat -rn       //查看本机路由表,也可用route命令
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
172.16.0.0      0.0.0.0         255.255.255.0   U         0 0          0 eth1
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
12.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U         0 0          0 lo
0.0.0.0         192.168.0.1     0.0.0.0         UG        0 0          0 eth0
0.0.0.0         192.168.0.254   0.0.0.0         UG        0 0          0 eth0
0.0.0.0         12.0.0.254      0.0.0.0         UG        0 0          0 eth0

2、添加一条路由
[root@linux-tys root]# route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.0.154 dev eth0  //添加一个网络路由
[root@linux-tys root]# route add -host 172.16.0.169 gw 172.16.0.254              //添加一个主机路由
[root@linux-tys root]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
172.16.0.169    172.16.0.254    255.255.255.255 UGH       0 0          0 eth1
192.168.3.0     192.168.0.154   255.255.255.0   UG        0 0          0 eth0
172.16.0.0      0.0.0.0         255.255.255.0   U         0 0          0 eth1
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
12.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U         0 0          0 lo
0.0.0.0         192.168.0.1     0.0.0.0         UG        0 0          0 eth0
0.0.0.0         192.168.0.254   0.0.0.0         UG        0 0          0 eth0
0.0.0.0         12.0.0.254      0.0.0.0         UG        0 0          0 eth0

———————————
注:
Flags:路由标志。其中U表示路由项是活动的;H表示目标为单个主机;G表示使用网关;R表对动态路由进行修复;D表示路由项是动态安装的;M表示动态修改路由;!表示拒绝路由。
Ref:依赖于本路由的其它路由数目。
Use:该路由项被使用的次数。
Iface:该路由项发送数据包使用的网络接口。
——————————————————-
[root@linux-tys root]# route del -net 192.168.3.0 netmask 255.255.255.0        //删除网络路由
[root@linux-tys root]# route del -host 172.16.0.169       //删除主机路由
[root@linux-tys root]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
172.16.0.0      0.0.0.0         255.255.255.0   U         0 0          0 eth1
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
12.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U         0 0          0 lo
0.0.0.0         192.168.0.1     0.0.0.0         UG        0 0          0 eth0
0.0.0.0         192.168.0.254   0.0.0.0         UG        0 0          0 eth0
0.0.0.0         12.0.0.254      0.0.0.0         UG        0 0          0 eth0

三、用命令ping测试网络连通性

[root@linux-tys root]# ping 192.168.0.16      //本命令需用用ctrl+c中止
PING 192.168.0.16 (192.168.0.16) 56(84) bytes of data.
64 bytes from 192.168.0.16: icmp_seq=1 ttl=64 time=0.550 ms
64 bytes from 192.168.0.16: icmp_seq=2 ttl=64 time=0.341 ms
64 bytes from 192.168.0.16: icmp_seq=3 ttl=64 time=0.222 ms
64 bytes from 192.168.0.16: icmp_seq=4 ttl=64 time=0.220 ms
64 bytes from 192.168.0.16: icmp_seq=5 ttl=64 time=0.208 ms
64 bytes from 192.168.0.16: icmp_seq=6 ttl=64 time=0.274 ms

— 192.168.0.16 ping statistics —
6 packets transmitted, 6 received, 0% packet loss, time 5095ms
rtt min/avg/max/mdev = 0.208/0.302/0.550/0.120 ms
[root@linux-tys root]# ping –help        //查看帮助
ping: invalid option — -
Usage: ping [-LRUbdfnqrvVaA] [-c count] [-i interval] [-w deadline]
            [-p pattern] [-s packetsize] [-t ttl] [-I interface or address]
            [-M mtu discovery hint] [-S sndbuf]
            [ -T timestamp option ] [ -Q tos ] [hop1 ...] destination
[root@linux-tys root]# ping -c 4 -s 1000 192.168.0.16
PING 192.168.0.16 (192.168.0.16) 1000(1028) bytes of data.
1008 bytes from 192.168.0.16: icmp_seq=1 ttl=64 time=0.314 ms
1008 bytes from 192.168.0.16: icmp_seq=2 ttl=64 time=0.251 ms
1008 bytes from 192.168.0.16: icmp_seq=3 ttl=64 time=0.231 ms
1008 bytes from 192.168.0.16: icmp_seq=4 ttl=64 time=0.233 ms

— 192.168.0.16 ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 3058ms
rtt min/avg/max/mdev = 0.231/0.257/0.314/0.035 ms

四、命令netstat的使用

1、netstat命令常用参数简介
1) –t  显示当前TCP协议连接情况
2) –l  查看系统监听情况
3)–ln 同上,但将以数字形式表示端口信息
4)netstat –i  查看网卡传送、接收数据包的情况
5) –an 查看所有连接,并以数字形式表示端口信息
6) –r  查看本机的路由

2、netstat命令使用示例
[root@linux-tys root]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:1024          0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:1025            0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:10000           0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      
tcp        0     52 192.168.0.154:22        192.168.0.16:1059       ESTABLISHED
tcp        0      0 192.168.0.154:22        192.168.0.16:1049       ESTABLISHED
udp        0      0 0.0.0.0:1024            0.0.0.0:*                           
udp        0      0 0.0.0.0:10000           0.0.0.0:*                           
udp        0      0 0.0.0.0:846             0.0.0.0:*                           
udp        0      0 0.0.0.0:111             0.0.0.0:*                           
udp        0      0 0.0.0.0:631             0.0.0.0:*                           
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     8474   /tmp/.esd/socket
unix  13     [ ]         DGRAM                    1580   /dev/log
unix  2      [ ACC ]     STREAM     LISTENING     7552   /tmp/.fam_socket
unix  2      [ ACC ]     STREAM     LISTENING     2161   /tmp/.font-unix/fs7100
unix  2      [ ACC ]     STREAM     LISTENING     8553   /tmp/ssh-XXVkjhRL/agent.4243
unix  2      [ ACC ]     STREAM     LISTENING     6092   /tmp/ssh-XXG3eSwq/agent.3773
unix  2      [ ]         STREAM                   8473   
unix  3      [ ]         STREAM     CONNECTED     7727   /tmp/.famaJaaeu
unix  3      [ ]         STREAM     CONNECTED     7726   
unix  2      [ ]         DGRAM                    5428   
unix  2      [ ]         DGRAM                    5165   
unix  2      [ ]         DGRAM                    4860   
unix  2      [ ]         DGRAM                    2237   
unix  2      [ ]         DGRAM                    2192   
unix  2      [ ]         DGRAM                    2179   
unix  2      [ ]         DGRAM                    2055   
unix  2      [ ]         DGRAM                    2013   
unix  2      [ ]         DGRAM                    1771   
unix  2      [ ]         DGRAM                    1630   
unix  2      [ ]         DGRAM                    1595   

[root@linux-tys root]# netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 tys.linux.com:ssh       192.168.0.16:1059       ESTABLISHED
tcp        0      0 tys.linux.com:ssh       192.168.0.16:1049       ESTABLISHED

[root@linux-tys root]#
                                                                             —–待续——–
本文出自 “lgzeng” 博客,请务必保留此出处http://lgzeng2360.blog.51cto.com/275998/132605

关键字: , | 分类: Linux常识 | 评论数: 0 | 阅读全文

linux如何查找一个结构体的原始定义

发表于 2009-02-09 00:29 浏览次数:1,605 次

下面以查找结构体FILE的原始定义为例:

1、我们知道,这些定义一般都在 /usr/include下面,所以首先到达目录 /usr/include 下面

2、用grep命令搜索 ,即 grep ‘FILE’ stdio.h,可得以下结果(部分),FILE在stdio.h中定义有好多地方提到过。

#if !defined __need_FILE && !defined __need___FILE

# define __need_FILE

# define __need___FILE

#endif /* Don’t need FILE.  */

#if !defined __FILE_defined && defined __need_FILE

struct _IO_FILE;

typedef struct _IO_FILE FILE;

#if defined __USE_LARGEFILE64 || defined __USE_SVID || defined __USE_POSIX \

__USING_NAMESPACE_STD(FILE)

3、从上面的搜索结果可以看到,实际上是把 _IO_FILE 定义为FILE,于是又要查找 _IO_FILE的定义。

4、用grep命令,即执行 grep ‘_IO_FILE’ *.h ,得到以下结果(部分,因为全部太多了,我们要从大量的结果中找到关键内容,当然也可以通过管道 二次使用grep)

_G_config.h:#define _G_HAVE_IO_FILE_OPEN 1

_G_config.h:#define _G_IO_IO_FILE_VERSION 0×20001

libio.h:struct _IO_jump_t;  struct _IO_FILE;

libio.h:  struct _IO_FILE *_sbuf;

libio.h:struct _IO_FILE {

libio.h:  struct _IO_FILE *_chain;

libio.h:#ifdef _IO_USE_OLD_IO_FILE

 

5、我们看到了libio.h:struct _IO_FILE { 这一行,所以知道 它是在libio.h中定义的,打开该文件,即可看到定义。

关键字: | 分类: Linux常识 | 评论数: 0 | 阅读全文

返回首页 | 关于我们 | 联系我们 | 广告合作 | 网站地图 | 友情链接 | 版权声明 |