*Linux之旅
文章平均质量分 72
奔跑吧,行者
这个作者很懒,什么都没留下…
展开
-
多进程并发编程----基于高级的预先创建进程池(accept使用线程上锁)的模型
本博文介绍如何使用线程对accept进程加锁保护。使用线程对accept加锁,不仅适用于同一进程内各线程之间的上锁,同样适用于不同进程之间的上锁。实现要点:1 互斥变量必须存放在所有进程共享的内存区域内2 告知线程函数库这是不同进程之间共享的互斥锁服务端程序的代码如下:#include #include #include #include #include原创 2016-04-25 17:56:06 · 1695 阅读 · 0 评论 -
Linux系统利用脚本删除空行或者空格的方法
Linux系统利用脚本删除空行的4种方法1)用tr命令 cat 文件名 |tr -s ‘\n’2)用sed命令 cat 文件名 |sed ‘/^$/d’ 3)用awk命令 cat 文件名 |awk ‘{if(0!=””)print}’ cat 文件名 |awk ‘{if(length !=0) print0!=””)print}’ cat 文件名 |awk ‘{if(lengt原创 2016-08-25 21:13:54 · 11081 阅读 · 0 评论 -
Linux系统使用ps命令查看进程所占cpu和内存比例
linux ps命令,查看进程cpu和内存占用率排序使用以下命令查看:ps -aux | sort -k4,4nps auxw --sort=rssps auxw --sort=%cpulinux 下的ps命令%CPU 进程的cpu占用率%MEM 进程的内存占用率VSZ 进程所使用的虚存的大小RSS 进程使用的驻留集大小或者是实际内存的大小TTY 与进程关联原创 2016-05-17 09:32:14 · 13105 阅读 · 0 评论 -
linux awk 内置函数(算数,字符串,时间等函数)详细介绍(实例)
这节详细介绍awk内置函数,主要分以下3种类似:算数函数、字符串函数、其它一般函数、时间函数一、算术函数:以下算术函数执行与 C 语言中名称相同的子例程相同的操作:函数名说明atan2( y, x )返回 y/x 的反正切。cos( x )返回 x 的余弦;x 是弧度。sin(原创 2015-12-10 18:12:42 · 2454 阅读 · 0 评论 -
linux shell脚本读取用户输入的参数
$# 是传给脚本的参数个数$0 是脚本本身的名字$1是传递给该shell脚本的第一个参数$2是传递给该shell脚本的第二个参数$@ 是传给脚本的所有参数的列表例如:#!/bin/shecho "arg_num: $#"echo "shell_name: $0"echo "first_arg : $1"echo "second_arg : $2"原创 2016-03-02 13:37:00 · 11101 阅读 · 0 评论 -
UNIX/LINUX使用expect实现人机自动交互功能
expect用法[#!/usr/bin/expect] 这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的bash、windows下的cmd是一类东西。 注意:这一行需要在脚本的第一行。 [set timeout 30] 基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒 。timeout -1 为永不超时[spaw原创 2015-07-01 10:12:25 · 3213 阅读 · 0 评论 -
grep命令的详细使用方法
在linux/unix中grep命令是非常有用的,它和管道(|)配合使用,非常强大,用于搜索文本文件,如果想要在几个文本文件中查找一字符串,可以使用‘grep’命令,‘grep’在文本中搜索指定的字符串。 假设您正在‘/usr/src/linux/Documentation’目录下搜索带字符串‘magic’的文件: $ grep magic /usr/src/linux/Documentation...原创 2015-07-13 13:38:19 · 12397 阅读 · 3 评论 -
linux下面ftp/wget命令下载文件夹目录
目标ftp服务器是一个非标准端口的ftp1.通过shell登录#ftp //shell下输入ftp命令,进入到ftp提示符>open IP PORT //IP ,PORT对应为服务器的IP和端口号或者直接使用一条语句#ftp IP PORT2.多文件下载(对目录无效)如:下载目录下的所有文件(子目录是无法下载下来的)>mget * 这样操作,下载每个文件都会提问,每次都...原创 2015-11-16 10:49:30 · 55086 阅读 · 1 评论 -
Linux系统tput命令用法实例详解
tput简介:用户可以使用shell的tput命令创建交互性的、专业性强的屏幕输出,如移动或更改光标、更改文本属性,以及清除终端屏幕的特定区域。系统上需要一个彩色监视器和tput命令。tput使用文件/etc/terminfo或/etc/termcap,这样就可以在脚本中使用终端支持的大部分命令了。在使用tput前需要使用tput命令初始化终端:$ tput inittput产原创 2016-09-19 22:22:22 · 12193 阅读 · 0 评论 -
在Vi里面实现字符串的批量替换
在Vi里面实现字符串的批量替换a. 文件内全部替换:%s#abc#def#g(用def替换文件中所有的abc)例如把一个文本文件里面的“linuxidc.com”全部替换成“linuxidc.net”::%s#linuxidc.com#xwen.net#g (如文件内有#,可用/替换,比如:%s/linuxidc.com/xwen.net/g)原创 2015-07-16 16:03:50 · 5290 阅读 · 0 评论 -
vim 代码提示功能,让vim可以媲美IDE
vim是一款支持插件、功能无比强大的编辑器,无论你的系统是linux、unix、mac还是windows,都能够选择他来编辑文件或是进行工程级别 的coding。如果能把vim用好了,不仅编程效率能得到大幅度提高,周围人也会因此而看得头晕眼花佩服不已,自己心里当然也会心花怒放啦。下面就让我 来介绍一下如何来进行配置。这些配置所涉及到的内容有:autocomplpop, ctags, TagLi原创 2015-12-15 13:32:53 · 1001 阅读 · 0 评论 -
多进程并发编程----进程间传递文件描述符基础~发送接收附属数据函数介绍
如果fork进程之后,子进程如果想要传递描述给父进程一般使用socketpair函数。此篇文章不介绍socketpair函数,二是介绍sendmsg和recvmsg函数,这两个函数隐藏的机构体有针对socket描述符的选项。具体如下:这两个函数为程序提供了一些其他的套接口I/O接口所不具备的高级特性。从概念上说,sendmsg函数是所有写入函数的基础,而他是从属于套接口的。下面原创 2016-04-15 16:59:34 · 1173 阅读 · 0 评论 -
多进程并发编程----进程间传递文件描述符基础~发送接收附属数据结构体介绍
附属信息可以包括0,1,或是更多的单独附属数据对象。在每一个对象之前都有一个structcmsghdr结构。头部之后是填充字节,然后是对象本身。最后,附属数据对象之后,下一个cmsghdr之前也许要有更多的填充字节。在这一章,我们将要关注的附属数据对象是文件描述符与证书结构。下图显示了一个包含附属数据的缓冲区是如何组织的。我们需要注意以下几点:cmsg_len与CMSG_LEN原创 2016-04-15 17:03:30 · 1326 阅读 · 0 评论 -
多进程并发编程----进程间传递文件描述符基础~socketpair函数简介
socketpair函数概要如下:#include #include int socketpair(int domain, int type, int protocol, int sv[2]);sys/types.h文件需要用来定义一些C宏常量。sys/socket.h文件必须包含进来定义socketpair函数原型。socketpair函数需要四个参数。他们是:套接口的域原创 2016-04-15 17:13:37 · 1653 阅读 · 0 评论 -
多进程并发编程----进程间传递文件描述符案例
#include#include#include#include#include#include#include#include#include#includeint send_fd(int fd, void *ptr, size_t nbytes, int sendfd){ struct msghdr msg; struct iovec iov[1]; union原创 2016-04-15 17:34:48 · 2057 阅读 · 0 评论 -
多进程并发编程----基于高级的预先创建进程池(accept不上锁)的模型
此篇博文先介绍最简单的服务器并发模型,此模型的大概框架如下:main{socket();bind();listen();for(i=0;ipid=fork();if(pid==0)//子进程do_child();}waitpid();close(fd);}do_child(){while(1){accept();read();wr原创 2016-04-21 16:45:09 · 1068 阅读 · 0 评论 -
多进程并发编程----基于高级的动态创建进程池的模型
此篇博文主要讲解如何动态创建进程的方法,此方法模型如下:main{ ps=socket(); bind(); listen(); while(1){ cs=accept(); if(cs){ pid=fork(); if(pid==0){//子进程处理 close(ps); do_child(cs); }原创 2016-04-21 18:01:03 · 979 阅读 · 0 评论 -
多进程并发编程----基于高级的预先创建进程池(accept使用文件上锁)的模型
本篇博文讲解如何使用fcntl文件上锁的方式对accept进行保护。如果多个进程在引用同一个监听套接字的描述符上调用accept,对于不同的内核accept不一定都是原子操作。Berkeley的内核支持这种模型,而system V就会出现问题,那么我们的解决方法之一就是本博文讲解的使用文件上锁保护accept函数调用,保证任意时刻只有一个进程阻塞在accept,其他进程则阻塞在试图获取用于保护原创 2016-04-25 17:43:45 · 718 阅读 · 0 评论 -
Find命令搭配atime/ctime/mtime时的日期写法
find可谓是aix/linux上使用较多的维护用命令,但很多时候需要用到针对时间的搜索。本文主要对find中搭配atime、ctime和mtime的各种参数进行介绍。atime:访问时间(access time),指的是文件最后被读取的时间,可以使用touch命令更改为当前时间;ctime:变更时间(change time),指的是文件本身最后被变更的时间,变更动作可以使chmod、ch原创 2015-11-23 10:31:57 · 6806 阅读 · 0 评论