
Linux(CentOS/Ubuntu)
文章平均质量分 55
左耳朵猫
这个作者很懒,什么都没留下…
展开
-
vim 精确匹配查找单词
1、从头搜索:/hello2、从尾搜索:?hello3、精确搜搜:"<“表示匹配单词开头,”>“表示匹配单词末尾,匹配完整单词”?<hello>“或者”/<hello>"如输入"/hel"、"/<hel"、"/llo>",可能搜索到hello...原创 2018-11-06 20:36:18 · 13470 阅读 · 1 评论 -
总结下进程间通信的方式
类别说明无名管道pipe仅能用于亲缘关系进程间通信,pipe函数可以创建读写管道,当父子进程可以相互收发消息时,注意自己发的消息不要被自己接收到了有名管道fifo以fifo文件作为通信媒介,与普通文件最大的不同在于fifo文件中的内容被读取后就没了,且只能以只读或者只写方式打开。信号可以通过原创 2017-11-04 17:49:00 · 378 阅读 · 0 评论 -
多线程死锁的产生原因及避免
一句话总结:资源竞争造成的无限等待,可通过加锁时效、死锁检测来避免资源竞争造成的无限等待:1、互斥条件:该进程拥有的资源,其他进程只能等待其释放2、不剥夺条件:该进程拥有的资源只能由其自己释放3、请求和保持条件:请求其他资源,同时自己拥有的资源又不放手4、循环等待:A等待B持有的资源,B等待A持有的资源,一直等待原创 2017-11-04 10:08:56 · 585 阅读 · 0 评论 -
聊聊ctrl+c和ctrl+z的区别
一句话总结:ctrl+c是强制中断程序,ctrl+c是暂停程序。Ctrl+CCtrl+ZCtrl+Dbgfgjobs强制中断程序,进程终止暂停程序,挂起退出shell将一个在后台暂停的命令,变成继续执行将后台中的命令调至前台继续运行查看原创 2017-10-25 15:15:41 · 1815 阅读 · 0 评论 -
聊聊SIGCHLD信号的作用
一句话总结:子进程终止或者停止时,将SIGCHLD信号发送给其父进程,按系统默认将忽略此信号,如果父进程希望被告知其子系统的这种状态,则应捕捉此信号。看下如何捕捉#include #include #include #include #include void sigFun(int sig){ printf("sigFun begin\n"); pid_t pid;原创 2017-10-24 23:58:45 · 1572 阅读 · 0 评论 -
聊聊wait和waitpid
一句话总结:wait来自于waitpid的简单封装,waitpid更灵活,可等待同组或其他组进程,可设置不阻塞。详细介绍man一下1、先上个wait例子看下#include #include //wait#include //wait#include //fork sleep #include //exitvoid main(){ pid_t pid1,p原创 2017-10-24 22:38:39 · 488 阅读 · 0 评论 -
聊聊exit()、_exit()、atexit()的区别
一句话总结:exit()函数在调用exit系统之前把文件缓冲区的内容写回文件;用_exit()函数直接将进程关闭,缓冲区的数据将会丢失;atexit则是main结束后调用处理函数。exit - cause normal process termination. void exit(intstatus);_exit, _Exit - terminate the calli原创 2017-10-31 12:40:41 · 368 阅读 · 0 评论 -
linux任务调度机制
一句话总结:原创 2017-10-30 13:07:02 · 1324 阅读 · 0 评论 -
系统如何将一个信号通知到进程
一句话总结:原创 2017-10-30 13:05:16 · 1332 阅读 · 0 评论 -
tcpdump抓包实例
一句话总结:熟练使用常用的参数,不满足就去man下,加上分析工具wireshark/fiddler如虎添翼。无聊的tcp/ip协议结合实战会变得有趣。常用:sudo tcpdump -iany port 1234 -Xnlps0sudo tcpdump -iany port 1234 -xnlps0sudo tcpdump -iany port 1234 -Anlps0sudo原创 2017-10-22 15:38:05 · 1012 阅读 · 0 评论 -
ubuntu sudo update与upgrade的作用及区别
一句话总结:update是更新软件列表,upgrade是升级软件。sudo apt-get updatesudo apt-get upgrade原创 2017-10-22 00:51:47 · 429 阅读 · 0 评论 -
Linux文本操作三剑客(sed, awk, grep)——grep
一句话总结:强大的文本搜索工具,结合正则表达式。格式grep [options] match_pattern file_name1 file_name2...[options]主要参数:-c:只输出匹配行的计数。-I:不区分大 小写(只适用于单字符)。-h:查询多文件时不显示文件名。-l:查询多文件时只输出包含匹配字符的文件名。-n:显示匹配行及 行号。-s:不显示原创 2017-10-21 21:33:18 · 338 阅读 · 0 评论 -
进程地址空间分布和可执行文件分布
进程地址空间分布和可执行文件分布: 转载于:http://www.cnblogs.com/gtarcoder/p/6006023.html进程地址空间 操作系统在管理内存时,每个进程都有一个独立的进程地址空间,进程地址空间的地址为虚拟地址,对于32位操作系统,该虚拟地址空间为2^32=4GB。 进程在执行的时候,看到和使用的内存地址都是虚拟地址,而操作原创 2017-10-29 21:02:59 · 624 阅读 · 0 评论 -
聊聊Linux下的静态库与动态库的生成与使用
一句话总结:静态库在链接阶段集成于程序中,程序生成可删除;动态库在程序运行时在/usr/lib/目录下查找调用,删除后错误,编译链接均需加上-fPIC。实验代码fun.h#ifndef _FUN_H_#define _FUN_H_#define ver 2.0void print();#endiffun.cpp#include #include "fun.h"using原创 2017-10-29 20:21:48 · 341 阅读 · 0 评论 -
Linux文本操作三剑客(sed, awk, grep)——awk
一句话总结:擅长文本分析及处理,以行为单位,mei行分为多个字段做处理。1、awk [-F field-separator] 'commands' input-file(s)其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默原创 2017-10-21 19:56:08 · 306 阅读 · 0 评论 -
Linux文本操作三剑客(sed, awk, grep)——sed
一句话总结:擅长文本分析及处理,熟知常用命令及差别。1、^表示行首,$表示行尾;1表示第一行,$表示最后一行2、命令字c替换的是行,s是替换指定字符串;d是删除一行,删除某个字符串直接用s即可zjy@ubuntu:~$ echo "like love" | sed "s/like//" love3、命令字i是插入到行前,命令字a与其相反,是追加在行后4、命令字p原创 2017-10-21 19:37:07 · 584 阅读 · 0 评论 -
线程池的核心实现
一句话总结:用队列实现,生产者添加任务,消费者执行任务;注意原子性操作。#include #include #include #include #include using namespace std;#define THREAD_NUM 3#define QUEUE_SIZE 3typedef boost::function Task;queue queueTask原创 2017-11-14 20:43:29 · 296 阅读 · 0 评论 -
makefile的写法
一句话总结:熟悉常用的技巧。直接上实例zjy@ubuntu:~/makefile$ lsfun main.cpp makefilezjy@ubuntu:~/makefile$ ls fun/fun.cpp fun.hzjy@ubuntu:~/makefile$ make--------DEPS=main.d fun/fun.d-原创 2017-10-24 12:59:53 · 688 阅读 · 0 评论 -
docker-compose、docker-machine安装
[root@localhost ~]# curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` &amp;gt; /usr/local/bin/docker-compose [root@localhost bin]# /usr/local/bin/dock...原创 2018-07-04 20:30:42 · 521 阅读 · 0 评论 -
centos安装logstash
1、下载安装公共签名keyrpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch2、在/etc/yum.repos.d/下新建一个repo文件,如logstash.repo[logstash-6.x]name=Elastic repository for 6.x packagesbaseurl=https://...原创 2018-07-11 09:48:33 · 959 阅读 · 0 评论 -
centos下安装JDK的4种方法
以下转载于:https://www.linuxidc.com/Linux/2016-09/134941.htm由于各Linux开发厂商的不同,因此不同开发厂商的Linux版本操作细节也不一样,今天就来说一下CentOS下JDK的安装:方法一:手动解压JDK的压缩包,然后设置环境变量1.在/usr/目录下创建java目录[root@localhost ~]# mkdir/usr/ja...转载 2018-07-11 09:41:42 · 381 阅读 · 0 评论 -
Linux应用程序添加到service
[simon@www ~]vimmain.go[simon@www ]vimmain.go[simon@www ] vim main.go [simon@www ~] go build main.go [simon@www ~]mvmaintestlinuxservice[simon@www ]mvmaintestlinuxservice[simon@www&...原创 2018-06-25 22:44:54 · 1624 阅读 · 0 评论 -
CentOS平台下的Docker安装与启动
174 yum search docker 175 yum install -y docker 176 systemctl start docker 177 docker version 178 docker info 179 sudo docker run hello-world原创 2018-06-17 01:45:10 · 229 阅读 · 0 评论 -
centos安装mysql
转载于:https://blog.youkuaiyun.com/wz1226864411/article/details/76146180一般在linux下安装mysql 的步骤如下:安装前看是否安装过mysql,yum list installed mysql*如果有就用yum remove卸载mysql查看yum库下是否有mysql-serveryum list | grep my...转载 2018-06-17 01:24:29 · 257 阅读 · 0 评论 -
centos安装Nginx
8 yum install net-tools 9 yum install wget 10 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 12 mkdir src 14 cd src/ 15 wget http://downloads...原创 2018-06-16 19:32:47 · 263 阅读 · 0 评论 -
supervisor
1、安装及启动sudo apt-get install supervisor/etc/init.d/supervisor start2、配置、reload配置sudo vim /etc/supervisor/supervisord.conf sudo supervisorctl reload/etc/init.d/supervisor restartsimon@ubuntu...原创 2018-06-07 14:31:20 · 313 阅读 · 0 评论 -
Mac、Ubuntu终端开启多标签及切换
1、MAC打开标签 command + T 拆分面板 command + D 关闭拆分 command + shift + D 切换 command + shift + [/]2、Ubuntu打开终端 ctrl + alt + T 打开标签 Ctrl + shift + T 切换标签 alt + 1、2、3;Ctrl + pagedown、pagecup 关闭 ctrl...原创 2018-05-12 21:34:51 · 3364 阅读 · 0 评论 -
Ubuntu升级go版本
sudo apt install golang-gosudo apt-get install golang-1.9sudo apt-get remove golang-1.9sudo apt autoremove 先卸载旧版本curl -O https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz $ tar -C...原创 2018-05-04 13:24:23 · 10478 阅读 · 0 评论 -
ssh-keygen生成git ssh密钥,解决多台电脑clone工程
1、检查是否生成过ssh 密钥cd ~/.ssh/ Windows下使用git bash2、使用ssh-keygen命令生成ssh 密钥使用ssh-keygen命令生成ssh 密钥可以使用以下命令:ssh-keygen -t rsa也可以使用以下命令在生成时添加注释:ssh-keygen -t rsa -C "XXXX"生成ssh 密钥后,可以到~/.ssh目录下查看...原创 2018-04-21 11:15:59 · 1733 阅读 · 0 评论 -
mac下git命令自动补全
获取脚本curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash在~/.bash_profile中加上if [ -f ~/.git-completion.bash ]; then . ~/.git-com...原创 2018-04-22 21:56:07 · 437 阅读 · 0 评论 -
Windows下安装Ubuntu虚拟机并配置go环境
安装虚拟机1、下载VMware,Ubuntu的iso安装包 2、打开bios中的VT-X、VT-D选项,VT就是虚拟机的意思 3、新建虚拟机 4、安装VMware tools。点击菜单虚拟机->安装VMWare tools,Ubuntu中出下载一个压缩包,解压出现文件夹vmware-tools-distrib,运行vmware-install.pl文件./vmware-instal...原创 2018-03-25 11:30:52 · 1275 阅读 · 0 评论 -
IO - 同步,异步,阻塞,非阻塞
IO分为同步IO(阻塞IO、非阻塞IO、多路复用IO、信号驱动IO)和异步IO,下面文章写的不错转载于:http://blog.youkuaiyun.com/historyasamirror/article/details/5778378同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分转载 2017-12-10 11:20:53 · 395 阅读 · 0 评论 -
Linux进程间通信——信号
一句话总结:一个是信号生成,一个是信号捕获。如系统一个信号可以换掉捕获的程序。(void) signal(SIGINT, ouch); //将终端中断信号的捕获变成ouch函数void ouch(int sig) { printf("\nOUCH! - I got signal %d\n", sig); //恢复终端中断信号SIGINT的原创 2017-10-21 16:57:36 · 217 阅读 · 0 评论 -
Linux进程间通信——共享内存
一句话总结:创建共享内存,并将之挂接到我们自定义的变量。优点是访问速度快,缺点是共享内存本身不具备同步机制,需加同步原语保证操作的原子性。四大金刚:1、创建共享内存:int shmget(key_t key, size_t size, int shmflg); 2、启动访问(attach,挂接到进程),可选择将共享内存地址链接到指定地址位置:void *shmat(int shm_id原创 2017-10-20 15:42:21 · 371 阅读 · 0 评论 -
cmake——效率高跨平台的makefile生成神器
在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下:编写 CmakeLists.txt。执行命令“cmake PATH”或者“ccmake PATH”生成 Makefile ( PATH 是 CMakeLists.txt 所在的目录 )。使用 make 命令进行编译。1、单源文件目录zjy@ubuntu:~/cmkTes原创 2017-08-02 16:57:29 · 1227 阅读 · 0 评论 -
Vim常用快捷键
1、移动在命令模式时,用 h、j、k、l 来分别实现左、下、上、右箭头的功能。快速定位:数字键(1+9)后再按下 h、j、k、l。w:光标往后移动一个词。0:移动光标到当前行首。(是数字0)^:移动光标到当前行的第一个字母位置。$:移动光标到行尾。:向下移动一屏。:向下移动半屏。:向上移动一屏。:向上移动半屏G:到文件尾gg:到文件首H:移动原创 2017-08-02 00:49:57 · 389 阅读 · 0 评论 -
Thread-Specific Data(TSD)线程私有数据
一句话总结:线程共享一个全局变量key,但对应的value每个线程都有一份,互不影响。表面上看起来这是一个全局变量,所有线程都可以使用它,而它的值在每一个线程中又是单独存储的,这就是线程存储的意义。1、首先需要创建一个类型为pthread_key_t类型的变量。2、调用pthread_key_create()来创建该变量。该函数有两个参数,第一个参数就是上面声明的p原创 2017-08-01 09:46:14 · 514 阅读 · 0 评论 -
pthread_once函数
一句话总结:保证仅初始化一次,线程安全,比用信号量效率更高。API:pthread_once_t once_control = PTHREAD_ONCE_INIT;int pthread_once(pthread_once_t* once_control, void (*init_routine)(void))简例:pthread_once_t原创 2017-07-31 23:35:10 · 540 阅读 · 0 评论 -
进程的终止方式
有8种方式使进程终止,其中前5种为正常终止,它们是1:从 main 返回2:调用 exit3:调用 _exit 或 _Exit4:最后一个线程从其启动例程返回5:最后一个线程调用pthread_exit异常终止有3种,它们是6:调用 abort7:接到一个信号并终止8:最后一个线程对取消请求做出响应原创 2017-07-31 23:02:46 · 620 阅读 · 0 评论 -
atexit函数
一句话总结:注册终止函数,在main函数结束后调用。仅能接受无参无返回类型的函数,可结合boost::bind灵活使用。函数名: atexit头文件:#include功 能: 注册终止函数(即main执行结束后调用的函数)用 法: void atexit(void (*func)(void));注意:exit调用这些注册函数的顺序与它们 登记时候的顺序相反。同一个函数如原创 2017-07-31 23:01:23 · 370 阅读 · 0 评论