在同一进程环境中使用多个线程可以共享所有的进程资源, 而且可以优化程序流程, 使很多工作异步进行;
线程单独拥有的资源有: 线程id, 堆栈, 信号屏蔽字, 一组寄存器的值, errno变量, 调度优先级和策略等;
线程共同拥有的资源有: 进程的所有资源包括程序代码, 全局变量, 堆栈空间, 文件描述符等;
POSIX.1-2001标准中规定的线程接口称为POSIX thread, 或pthreads. 编译时要加-lpthread.
目前的linux内核是以轻量级进程(lightweight process, LWP)的方式实现多线程的.
内核里每个LWP对应用户空间的一个线程, LWP拥有自己的task_struct, 也是一个进程调度单位;
LWP与普通进程的区别是多个LWP共享某些资源, 如: 地址空间, 打开的文件等;
Solaris的线程库就不是一个LWP对应一个用户空间线程, 而是用户空间分时复用数量有限的LWP.
zzfrom:http://bbs.chinaunix.net/thread-218853-1-1.html
我在 CU 的日子並不長,有幸在 shell 版上與大家結緣。
除了跟眾前輩學習到不少技巧之外,也常看到不少朋友的問題。
然而,在眾多問題中,我發現許多瓶頸都源於 shell 的基礎而已。
每次要解說,卻總有千言萬語不知從何起之感…
cat /proc/cpuinfo
cat /proc/meminfo
ethtool -i eth0
df -h
lsb_release -a
getconf LONG_BIT
uname -a
zzfrom:http://hi.baidu.com/ganss/blog/item/656b095432b65f56574e0074.html
除了最简单的运行gcc/g++ filename(这样只能运行最简单的小程序)外,GCC都需要用各种选项来实现其强大的功能。
下面是GCC的一些常用选项描述:
生成特定格式的文件:
-E 只激活预处理,但不生成文件,需要把它重定向到一个输出文件里面。例子:
gcc -E hello.c > pianoapan.txt
gcc -E hello.c | more
-C 在预处理的时候,不删除注释信息,一般和-E使用,有时候用这个分析程序很方便。
-S 只激活预处理和编译,就是指把文件编译成为汇编代码。
例子: gcc -S hello.c
-c 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件
例子: gcc -c hello.c
-o 指定目标文件名称,例子:
gcc -o hello hello.c
http://www.91linux.com/html/article/network/20090120/15461.html
一,什么情况下需要远程开机?
如果我们的服务器没有部署在本地(实际上通常都是这样的,我们会把服务器托管到IDC机房),
而且服务器在机房中不止一台,其中一台被关闭时,则我们可以远程连接一台没有关机的服务器上,
然后进行远程开机.
二,远程开机需要的软件
它需要wakeonlan这个软件,
从何处得到它?
它的官方站是:http://sourceforge.net/projects/wake-on-lan/
如果使用rpm包可以从这里下载:http://dag.wieers.com/rpm/packages/wol/
如果使用fedora,则可以用yum命令安装:
yum install wol
三,如何进行远程开机?
先不要急着去关闭你的linux服务器,你首先要确定它是否支持远程开机?
第一步:登录到目标服务器,用ethtool这个命令打印出网卡的信息
[root@localhost lhd]# ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 32
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: d
Current message level: 0x00000007 (7)
Link detected: yes
ifconfig:
ifconfig eth0
ifconfig eth0 192.168.0.1 netmask 255.255.255.0
ifconfig eth0 up
ifconfig eth0 down
gateway:
# route add default gw 192.168.30.1 eth0
dns:
# vi etc/resolv.conf
nameserver 202.131.80.1
nameserver 202.131.80.5
原文:http://blog.chinaunix.net/u/16651/showart.php?id=434959
众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态 库,并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中 的函数,以及该动态库的其它资源了。在Linux中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下三种方法来指定。
gdb调试命令 http://lubobill1990.blog.163.com/blog/static/369303862010913105122718/
Linux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的一些功能:
zz from:http://blog.chinaunix.net/u/31088/showart_506966.html
1. core文件的简单介绍
//—————————————————————
在一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。
在默认情况下,ld链接器会将libc、crt1.o等这些CRT和启动文件与程序的模块链接起来,但是有些时候,我们 可能不需要这些文件,或者希望使用自己的libc和crt1.o等启动文件,以替代系统默认的文件,这种情况在嵌入式系统或操作系统内核编译的时候很常 见。GCC提高了两个参数“-nostartfile”和“-nostdlib”,分别用来取消默认的启动文件和C语言运行库。
注:gnuplot也好强大,可以作为介于matlab和gmt的一个画图工具了
source : http://darksair.org/wiki/Gnuplot.html#sec5
附带 http://www.gnuplot.info/screenshots/index.html#demos
Gnuplot
Introducing Gnuplot 使用 Gnuplot Gnuplot Interactive Environment Gnuplot Scripting Gnuplot for Real
zz from:http://blog.chinaunix.net/u2/65114/showart_1099446.html
一、 基础篇:
在linux命令提示符下运行gnuplot命 令启动,输入quit或q或exit退 出。
1、plot命令
gnuplot> plot sin(x) with line linetype 3 linewidth 2 或
gnuplot> plot sin(x) w l lt 3 lw 2 %用线画,线的类型(包括颜色与虚线的类型)是3,线的宽度是2, 对函数sin(x)作图
If you get error messages like this Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified
xhost: unable to open display ":0.0"
when running a program, you probably need to add the user to the X server access list.
You can add a user to the X server access list with # xhost +local:username
This allows "username" to connect to the local running X server.
http://code.javaeye.com/blog/433636
centos安装过程中,安装语言包时选择了english,在安装完毕后浏览中文网页或查看中文文档时总是宣誓乱码,因此需要安装中文语言包,如果不能从安装盘进行安装,可以通过yum进行安装,安装办法为:
http://doc.linuxpk.com/3721.html
-include file
包含某个代码,简单来说,就是便以某个文件,需要另一个文件的时候,就可以用它设定,功能就相当于在代码中使用#include<filename>
例子用法:
/etc/init.d/network restart
service network restart
mpiexec -n 2 ./hete
mpiexec -machinefile hosts -np 2 ./hete
启动ftp服务: /usr/local/sbin/proftpd
安装ftpd服务器:http://hi.baidu.com/enovo/blog/item/dc64b119bd8f6f4043a9ade7.html
这里安装的所proftpd.
ftp常用命令:
ftp -v -d -i -n -g [主机名] ,其中 FTP的命令行格式为:
-v 显示远程服务器的所有响应信息;
-n 限制ftp的自动登录,即不使用;.n etrc文件;
-d 使用调试方式;
-g 取消全局文件名。
基础知识:
grep:
grep实际来源自命令行编辑器,可以这样理解它的名称来源g/re/p:其中g代表global,re代表regex,p代表print;意思就是全局正则表达式匹配并打印。实际上gerp的命令格式是这样的:grep -c "patten" filename filename,其中patten是正则表达式。所有grep主要完成在输入中进行正则表达式匹配的,并输出相关信息的功能。
为了支持交叉编译,可能需要修改的内容项目
一.需要修改的变量:
CC C compiler command
CFLAGS C compiler flags
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
LIBS libraries to pass to the linker, e.g. -l<library>
CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
1.文件操作
rm -r dir //删除非空目录
mkdir //创建目录
mv//移动文件
cp soure dest//复制文件
rmdir//删除空目录
2.设置环境变量path
一种设置当前用户的环境变量:
在用户主目录下有一个 .bashrc 文件,可以在此文件中加入 PATH 的设置如下:
export PATH=”$PATH:/your path1/:/your path2/…..”
注意:每一个 path 之间要用 “:“ 分隔。
注销重启 X 就可以了。