Perl脚本 杂记
Perl脚本 杂记[@more@]Perl脚本:Perl chdir函数2010年10月29日 星期五 下午 16:24用法:chdir EXPRchdir介绍:如果可能,chdir函数改变当前进程的工作目录到EXPR。如果省略EXPR,即返回调用者的根目录。成功时返回真,否则返回假。例子:假设根目录/home/zhenglc:#!/usr/bin/perlchdir "/usr/home";# Now you are in /usr/home dir.chdir;# Now you are in home directory /home/zhenglc又或者是用perl的单行命令:perl -e 'chdir; print `pwd`'#输出:/home/zhenglcperl -e 'chdir "/home/zhenglc/temp/"; print `p
awk 用法杂记
awk 用法杂记[@more@]awk '{if($1=="'user3'") {print $1,$2,$3;exit}}' file|while read a b c 这样可以通过read读来自管道传过来的信息。
pthread_once()操作
pthread_once()[@more@]pthread_once()操作 仅执行一次的操作int pthread_once(pthread_once_t *once_control, void (*init_routine) (void))本函数使用初值为PTHREAD_ONCE_INIT的once_control变量保证init_routine()函数在本进程执行序列中仅执行一次。#include <stdio.h>#include <pthread.h>pthread_once_t once=PTHREAD_ONCE_INIT;void once_run(void){printf("once_run in thread %dn",pthread_self());}void * child1(void *arg){int tid=pthread_self(); printf("thread %d entern",tid
pthread_join()
pthread_join()[@more@]pthread_join()会挂起父线程,直至子线程完成才可以执行后面的代码,此外,一个PTHREAD_CREATE_JOINABLE状态的子线程不会自动释放该线程的内存资源,包括线程描述符和其使用的栈;而主线程调用pthread_detach()时,无需等待子线程的完成,它可以立即执行后面的代码,当然,也有可能主线程执行完之后销毁进程,导致子线程未能执行.为了很好的说明互斥锁,我们使用一个实例来进行说明. 假设cond表示条件变量.mutex表示互斥锁.x==y表示我们要满足的测试条件.我们可以有下面的伪代码: #include
几个网络常见的名词解释
几个网络常见的名词解释[@more@]同步:发送方不等待接收方响应,便接着发下一个数据包的通信方式。异步:发送方发出数据后,等收到接收方发回的响应,才发下一个数据包的通信方式。阻塞套接字:执行此套接字的网络调用时,直到成功才返回,否则一直阻塞在此网络调用上。非阻塞套接字:执行此套接字的网络调用时,不管是否执行成功都立即返回。在实际的网络通信开发中,异步非阻塞套接字是用的最多的,C/S结构的软件就是异步非阻塞模式的。
线程中的条件变量pthread_cond_wait、pthread_cond_signal
线程中的条件变量pthread_cond_wait、pthread_cond_signal[@more@]条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待 "条件变量的条件成立 "而挂起;另一个线程使 "条件成立 "(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。1.创建和注销 条件变量和互斥锁一样,都有静态动态两种创建方式,静态方式使用PTHREAD_COND_INITIALIZER常量,如下: pthread_cond_t cond=PTHREAD_COND_INITIALIZER 动态方式调用pthread_cond_init()函数,API定
pthread_cond_wait()函数的理解
pthread_cond_wait()函数的理解[@more@]pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t*mutex)函数传入的参数mutex用于保护条件,因为我们在调用pthread_cond_wait时,如果条件不成立我们就进入阻塞,但是进入阻塞这个期间,如果条件变量改变了的话,那我们就漏掉了这个条件。因为这个线程还没有放到等待队列上,所以调用pthread_cond_wait前要先锁互斥量,即调用pthread_mutex_lock(),pthread_cond_wait在把线程放进阻塞队列后,自动对mutex进行解锁,使得其它线程可以获得加锁的权利。这样其它线程才能对临界资源进行访问并在
混杂模式
混杂模式[@more@]以太网(Ethernet)具有共享介质的特征,信息是以明文的形式在网络上传输,当网络适配器设置为监听模式(混杂模式,Promiscuous)时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。IEEE802.3 标准的以太网采用的是持续 CSMA 的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。运用这一原理使信息捕获系统能够拦截的我们所要的信息,这是捕获数据包的物理基础。以太网是一种总线型的网络,从逻
网络--------杂记
网络--------杂记[@more@]udp数据报都有一个长度,如果一个数据包正确地到达其目的地,那么该数据报的长度将随数据一道传递给接收端的应用进程,TCP是一个字节流协议,没有任何记录边界,这一点不同于UDP。既然UDP是无连接的,因此就没有诸如关闭一个UDP连接之类的事情。避免僵死进程出现的方法设置僵死的状态的目的是维护子进程的信息,以便父进程在以后的某个时候获取。I/O模型:1.阻塞式I/O2.非阻塞式I/O3.I/O复用4.信号驱动5.异步I/Orecvfrom 和 sendto 适合用于UDP中,在UDP中如果用到connect,该UDP成为已连接的UDP,这时就不可使用
pthread_detach
pthread_detach[@more@]创建一个线程默认的状态是joinable, 如果一个线程结束运行但没有被join,则它的状态类似于进程中的Zombie Process,即还有一部分资源没有被回收(退出状态码),所以创建线程者应该调用pthread_join来等待线程运行结束,并可得到线程的退出代码,回收其资源(类似于wait,waitpid) 但是调用pthread_join(pthread_id)后,如果该线程没有运行结束,调用者会被阻塞,在有些情况下我们并不希望如此,比如在Web服务器中当主线程为每个新来的链接创建一个子线程进行处理的时候,主线程并不希望因为调用pthread_join而阻塞
单播、多播(组播)和广播的区别
单播、多播(组播)和广播的区别[@more@]单播、多播和广播单播”(Unicast)、“多播”(Multicast)和“广播”(Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语。那么这些术语究竟是什么意思?区别何在?1.单播:网络节点之间的通信就好像是人们之间的对话一样。如果一个人对另外一个人说话,那么用网络技术的术语来描述就是“单播”,此时信息的接收和传递只在两个节点之间进行。单播在网络中得到了广泛的应用,网络上绝大部分的数据都是以单播的形式传输的,只是一般网络用户不知道而已。例如,你在收发电子邮件、浏览网
close 和 shutdown
close 和 shutdown[@more@]打开的套接口总是需要调用close来关闭,这样就能够回收资源。虽然大部分发行版本的linux,至少在我的fedora上面,不执行close,当进程死亡的时候打开的套接口仍然会被回收,但依赖于这点回收的话具有很大的不确定因素,因为不能保证所有的内核都会在进程死亡的时候去回收资源(绝大部分嵌入式系统上不会)。 但依靠close来关闭套接口不是一个非常有效的方法。原因一:之前曾经说过,close只是将描述字共享计数减一,只有当共享计数为0的时候,资源才会被回收。原因二是:双方通信存在了很大的不确定因素,譬如说
IP地址转换函数,inet_pton,inet_ntop
IP地址转换函数,inet_pton,inet_ntop[@more@]Linux下这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“整数”之间转换 而且,inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。 inet_pton函数原型如下[将“点分十进制” -> “整数”] #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> int inet_pton(int af, const char *src, void *dst); 这个函数转换字符串到网络地址,第一个参数af是地址族,转换后存在dst中 inet_pton
单用户模式下修改root密码
单用户模式下修改root密码[@more@]e 第二行按e 在出现的命令行后添加一个空格和1如" 1"回车 再按b参考:http://www.beijibear.com/index.php?aid=179
自动挂载 fstab
自动挂载 fstab[@more@]mount -fstype ext3/ext2/vfat/iso9660/nfs/cifsmount -o remount,rw /mnt 重新挂载自动挂载root@debian:/etc# cat fstab # /etc/fstab: static file system information.# 设备 挂载点 文件系统类型 参数 备份 检测# <file system> <mount point> <type> <options> <dump> <pass>proc /proc proc defaults 0 0/dev/sda1 / ext3 errors=remount-ro 0 1/dev/sda2 /home reiserfs defaults 0 2/dev/sda3 none swap sw 0
查找命令
查找命令[@more@]watch ls 必须针对可执行文件并且在echo $PATH目录中的文件whereis ls 即可列出文件路径且列出man配置对其的说明locate 对新建的文件不一定好用,这时需执行updatedbupdatedb 更新系统内部数据库find /root -name abc.txt -exec rm {} ; 后面-exec跟着可执行的命令,执行时不交互,rm {} ; 这句话意思将该文件删除, 字段{}表示引用路径find / -name abc.txt -ok rm {}; 后面的-ok是交互的执行后面的操作find /root -type b 查找指定文件的类型find /root -perm -777 查找指定权限find /root -perm +777 只要文件有权限,
计划任务
计划任务[@more@]名称 : linux at命令使用权限 : 所有使用者 使用方式 : at -V [-q queue] [-f file] [-mldbv] TIME 说明 : Linux at命令可以让使用者指定在 TIME 这个特定时刻执行某个程式或指令,TIME 的格式是 HH:MM其中的 HH 为小时,MM 为分钟,甚至你也可以指定 am, pm, midnight, noon, teatime(就是下午 4 点锺)等口语词。 如果想要指定超过一天内的时间,则可以用 MMDDYY 或者 MM/DD/YY 的格式,其中 MM 是分钟,DD 是第几日,YY 是指年份。另外,使用者甚至也可以使用像是 now + 时间间隔来弹性指定时间,其中的时间间隔可以是
制作磁盘镜像的方法
制作磁盘镜像的方法[@more@]1.cat /dev/cdrom >> redhat5.iso2.dd if=/dev/cdrom of=redhat5.iso
分区,文件系统的扩大与缩小,文件系统格式转换(ext2,ext3)
分区,文件系统的扩大与缩小,文件系统格式转换(ext2,ext3)[@more@]主分区和扩展分区的区别:http://zhidao.baidu.com/question/12165531.htmldf -Th 查看分区情况,分区挂载时显示fdisk -l 查看分区情况fdisk /dev/sdan -> 新建e -> 扩展分区p -> 主分区w -> 保存退出增加交换分区方法:1.在扩展分区中添加逻辑分区 /dev/sda52.swapon -s 显示交换区的使用状况mkswap /dev/sda5 对/dev/sda5逻辑分区进行格式化成swapswapon /dev/sda5 启动系统交换区(swapoff /dev/sda5 关闭系统交换分区)扩大文件系统的方法:(参考:htt
Linux磁盘配额Quota配置
Linux磁盘配额Quota配置[@more@]针对用户的配额mount -o usrquota,rw,sync /dev/sda5 /home 将磁盘分区挂载打开选项quotacheck /home 检测磁盘分区useradd sungyedquota -u sungy 对用户进行配置quotaon /home 开启磁盘空间限制su - sungy 切换为普通用户dd if=/dev/zero of=/test.txt bs=30k count=1 以该用户的身份在自己的宿主目录下创建一个30k大小的文件edquota执行完后,出现文本Filesystem blocks soft hard inodes soft hard0 0 30 50 9 14 16其中blocks是不要改的,它是读到的是系统的信息blocks后面的soft和hard要根据blocks数值