linux/unix
文章平均质量分 71
GoRustNeverStop
这个作者很懒,什么都没留下…
展开
-
使用 nice、cpulimit 和 cgroups 限制 cpu 占用率
Linux内核是一名了不起的马戏表演者,它在进程和系统资源间小心地玩着杂耍,并保持系统的能够正常运转。 同时,内核也很公正:它将资源公平地分配给各个进程。但是,如果你需要给一个重要进程提高优先级时,该怎么做呢? 或者是,如何降低一个进程的优先级? 又或者,如何限制一组进程所使用的资源呢?答案是需要由用户来为内核指定进程的优先级大部分进程启动时的优先级是相同的,因此Linux内核会公平地...转载 2020-01-20 14:17:05 · 1620 阅读 · 0 评论 -
auto-logout in linux
Almost everyone (not just system administrators) are forgetful and used to leave the Linux/Unix login session open (without logging out).So, how to make sure all the Linux servers will automatically转载 2013-12-12 11:14:03 · 2366 阅读 · 0 评论 -
bad interpreter:No such file or directory的原因
今天在编译完Fortran的一个程序之后,却用原来的调用脚本怎么也没法执行,问题如标题,最好找到这篇文章,恍然大悟。 Linux下面一个脚本死活也运行不了, 我检查了数遍,不可能有错。快Insane啦!提示:bad interpreter:No such file or directory上网上找了好久,总算发现原来是文件格式的问题。这个文件是我在Windows下编写的。换行转载 2013-10-15 18:52:52 · 3903 阅读 · 0 评论 -
Linux C语言编程学习材料
C语言作为大部分编程语言的基础,盛行三十多年不衰弱, 不论是是准备做 PHP/Java/Python/Golang 任何语言的开发学习,C语言都是基础的,我们很多基础很小的互联网运行的开源软件服务都是C语言构筑,所以,有个扎实的C语言基础,或者去学习C语言是非常有必要和帮助的。今天就简单列一些如果要做一个使用C语言来开发高性能后端网络应用的工程师,需要阅读那些书籍和学习那些资料。转载 2014-06-26 09:07:46 · 769 阅读 · 0 评论 -
Linux网络编程必看书籍推荐
http://blog.csdn.net/21aspnet/article/details/6694485#comments 首先要说讲述计算机网络和TCP/IP的书很多。 先要学习网络知识才谈得上编程讲述计算机网络的最经典的当属Andrew S.Tanenbaum的《计算机网络》第五版,这本书难易适中。《计算机网络(第5版)》是国内外使用最广泛、最权威的计算机网络经转载 2014-06-26 09:33:14 · 1970 阅读 · 0 评论 -
Linux中errno使用
http://blog.csdn.net/21aspnet/article/details/6740110 当linux中的C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因,在实际编程中用这一招解决了不少原本看来莫名其妙的问题。但是errno是一个数字,代表的具体含义还要到errno.h转载 2014-06-26 09:52:04 · 911 阅读 · 0 评论 -
使用 sendfile() 提升网络文件发送性能
http://hily.me/blog/2011/01/use-sendfile-accelerate-file-sending/ 偶见一好文,清楚地阐述了什么是零拷贝(Zero Copy)以及 sendfile 的由来,不复述下实感不快。原文见:http://www.linuxjournal.com/article/6345文章中列出了我们平时通过网络发送文件时会用到的两个系转载 2014-06-26 09:28:51 · 1313 阅读 · 0 评论 -
信号处理方法的问题
http://taohui.org.cn/handle_signal.html转载 2014-06-27 18:18:36 · 1044 阅读 · 0 评论 -
sftp相关命令解析
Linux下使用SFTP命令摘记:cd 路径 更改远程目录到“路径”lcd 路径 更改本地目录到“路径”chgrp group path 将文件“path”的组更改为“group”chmod mode path 将文件“path”的原创 2014-05-27 16:39:33 · 2416 阅读 · 0 评论 -
错误“a label can only be part of a statement and a declaration is not a statement”解决方法
之前写代码的时候用了一个goto语句,结果原创 2014-06-17 16:41:24 · 32823 阅读 · 7 评论 -
Nginx中目录树的遍历
Nginx中遍历目录主要是通过ngx_walk_tree原创 2014-07-31 12:27:53 · 3145 阅读 · 0 评论 -
【转】Linux shell IO重定向
终于理解了所谓的I/O重定向。Linux shell中的File Descripter可以理解为一个指向文件的指针。默认有三个FD:0,1,2。分别指向的是:Keyboard设备文件,Moniter设备文件,和Moniter设备文件。Shell中还允许有3..9的FD,默认都没有打开,可以认为指向的为null。可以通过一下命令查看得开的FD:ls /proc/self/fd原创 2014-08-25 19:16:14 · 2960 阅读 · 0 评论 -
学习Linux博客(会持续更新)
收集一些有助于学习Linux的博客论坛,原创 2014-08-12 20:53:08 · 674 阅读 · 0 评论 -
【转】Linux /dev目录详解和Linux系统各个目录的作用
Linux /dev目录详解 在linux下,/dev目录是很重要的,各种设备都在下面。下面简单总结一下: dev是设备(device)的英文缩写。/dev这个目录对所有的用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序,这一点和windows,dos操作系统不一样。它实际上是一个访问这些外部设备原创 2014-09-17 18:49:41 · 936 阅读 · 0 评论 -
性能提升总结
之前我们服务器的性能仅能够达到10G左右,超过10G后性能没办法再提升。因此,最近项目组决定对服务器的性能进行提升,达到14G以上的性能,经过将近两个月的攻关,目前服务器的性能已经可以达到14G,总结这段性能提升的过程,可以总结为两个阶段:1. 突破10G达到13G的性能 突破10G的关键在于找到了限制性能的根本原因:发包的代码中存在一个小小的bug,提交给sendfile原创 2014-12-20 20:55:26 · 826 阅读 · 0 评论 -
组播发送和组播接收的源代码例子【转】
组播原理这里就不介绍了, 我博客里有介绍组播原理的详细的文章。这里只是实现一个小例子, 一个 send.cpp 一个recv.cpp文件。编译后生成2个进程, 一个接收一个发送。Sender.cpp 文件内容如下:#include #include #include #include #include #include #include #includ原创 2014-12-13 11:44:58 · 2515 阅读 · 0 评论 -
shell eval命令详解【转】
文章一功能说明:重新运算求出参数的内容。语 法:eval [参数]补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行。参 数:参数不限数目,彼此之间用分号分开。 1.eval命令将会首先扫描命令行进行所有的替换,憨厚再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复原创 2014-09-17 18:54:37 · 11740 阅读 · 2 评论 -
IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)
当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。《 IO - 同步,异步,阻塞,非阻塞 》是我在开始学习epoll和libevent的时候写的,主要的思路来自于文中的那篇link 。写完之后发现很多人都很喜欢,我还是非常开心的,也说明这个问题确实困扰了很多人。随着学习的深入,渐渐的感觉原来的理解有些偏差,但是还是没引起自己的重视,觉着都是一些小错误,无伤大雅。直到原创 2015-04-11 14:55:20 · 806 阅读 · 0 评论 -
linux中的epoll机制
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明: #define原创 2015-04-11 15:01:56 · 872 阅读 · 0 评论 -
工作中用到的命令
远程下载svn checkout http://192.168.xxx.xxx/svn/ixp425 --username xxx --password xxx 点评:1、将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn c原创 2015-05-30 11:05:19 · 498 阅读 · 0 评论 -
进程和线程区别
进程是什么?程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。这是这样的设计,大大提高了CPU的利用率。进程的出现让每个用户感觉到自己独享CPU原创 2015-12-27 23:28:13 · 835 阅读 · 0 评论 -
信号量、互斥锁,读写锁和条件变量的区别
原文地址:信号量、互斥锁,读写锁和条件变量的区别 作者:qqrilxk信号量强调的是线程(或进程)间的同步:“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在sem_wait的时候,就阻塞在那里)。当信号量为单值信号量是,也可以完成一个资源的互斥访问。有名信号量:可以用于不同进程间或多线程间的互斥与同步转载 2015-12-27 18:16:56 · 5358 阅读 · 0 评论 -
Linux下常用压缩格式的压缩与解压方法
.tar 解包: tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) --------------------------------------------- .gz 解压1:gunzip FileName.gz 解压2:gzip -d FileName.gz 压缩:gzip转载 2016-03-18 15:56:19 · 1083 阅读 · 0 评论 -
非阻塞connect()
如何设置socket的Connect超时(linux) [From]http://dev.cbw.com/c/c/200510195601_4292587.shtml1.首先将标志位设为Non-blocking模式,准备在非阻塞模式下调用connect函数2.调用connect,正常情况下,因为TCP三次转载 2016-04-12 21:23:30 · 953 阅读 · 0 评论 -
FTP连接报错530 Permission denied解决方法
虚拟机装好RedHat后,准备使用filezilla连接,输入IP地址,root用户,密码,快速连接,报错: 530 Permission denied。 故障排除: 1.首先检查系统是否开启了vsftp服务,如果没有开启,先开启该服务。2.查看配置 vsftpd的配置,配置文件中限定了vsftpd用户连接控制配置。vsftpd.ftpusers:位于/etc/vsftpd原创 2016-04-30 11:00:38 · 127521 阅读 · 1 评论 -
如何让服务只运行单个实例
对于很多服务来说,在同一个服务器上只能运行一个实例,那么通过什么方法来保证程序同一时刻只有一个实例运行呢?通过编写shell脚本来管理程序的启动、停止是个不错的方法。在启动时,shell脚本会创建进程标识文件(存储正在运行实例的pid)以表明已经有实例在运行,如果文件已存在,则说明已有实例在运行,不需要做任何事;在退出时,shell脚本会删除进程标识文件,表明没有实例运行。shell脚转载 2016-05-16 13:03:53 · 1007 阅读 · 0 评论 -
Linux进程间通信——使用共享内存
下面将讲解进程间通信的另一种方式,使用共享内存。一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一转载 2016-05-31 21:17:22 · 1142 阅读 · 0 评论 -
64位linux下inet_ntop()返回值竟然为int,printf报段错误
inet_ntoa()在CENTOS532位版和64为机器上结果不一样。 printf(" address:%s\n", inet_ntop(hp原创 2016-05-19 17:53:10 · 2123 阅读 · 0 评论 -
gcc与g++的区别
一:gcc与g++比较编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而 c++代码用g++,或者说编译用gcc,链接用g++,一时也不知哪个说法正确,如果再遇上个extern "C",分歧就更多了,这里我想作个了结,毕竟知识的目的是令人更清醒,而不是更糊涂。 误区一:gcc只能编译c代码,g++只能编译c++代码两者都可以,但是请转载 2016-06-02 09:40:09 · 389 阅读 · 0 评论 -
libcurl CURLOPT_WRITEFUNCTION注意事项
NAMECURLOPT_WRITEFUNCTION - set callback for writing received dataSYNOPSIS#include size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata); CURLcode curl_easy_se原创 2016-07-11 11:02:06 · 10259 阅读 · 1 评论 -
项目中遇到的问题,解决的方法
在媒资管理系统内容分发服务器的项目开发中遇到的问题:1. 使用libcurl进行FTP下载时,接收缓存不加限制,导致最后内存耗完。解决方法: 使用一块固定大小的缓存,当缓存用完后,随即处理数据,处理完成后再继续接收数据2. 并发处理任务时,不对并发数加以限制,导致程序出现不可控的情况。解决方法:使用线程池,限制线程数原创 2016-07-11 11:46:22 · 1651 阅读 · 0 评论 -
线程上下文切换和进程上下文切换的区别
线程上下文切换和进程上下问切换一个最主要的区别是线程的切换虚拟内存空间依然是相同的,但是进程切换是不同的。这两种上下文切换的处理都是通过操作系统内核来完成的。内核的这种切换过程伴随的最显著的性能损耗是将寄存器中的内容切换出。 另外一个隐藏的损耗是上下文的切换会扰乱处理器的缓存机制。简单的说,一旦去切换上下文,处理器中所有已经缓存的内存地址一瞬间都作废了。还有一个显著的区别是当转载 2016-07-23 12:17:17 · 3279 阅读 · 0 评论 -
编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程
原文:http://blog.csdn.net/luoweifu/article/details/46595285 作者:luoweifu 转载请标名出处什么是线程什么是线程?线程与进程与有什么关系?这是一个非常抽象的问题,也是一个特别广的话题,涉及到非常多的知识。我不能确保能把它讲的话,也不能确保讲的内容全部都正确。即使这样,我也希望尽可能地把转载 2016-07-23 12:19:59 · 696 阅读 · 0 评论 -
gdb调试多进程和多线程命令
1. 默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可。 follow-fork-mode detach-on-fork 说明parent转载 2016-07-13 08:49:55 · 642 阅读 · 0 评论 -
对于linux socket与epoll配合相关的一些心得记录
对于linux socket与epoll配合相关的一些心得记录没有多少高深的东西,全当记录,虽然简单,但是没有做过测试还是挺容易让人糊涂的int nRecvBuf=32*1024;//设置为32Ksetsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));1、通过上面语句可以简单设置缓冲区大小,测试转载 2016-07-13 09:21:44 · 3479 阅读 · 0 评论 -
linux 中 timeval结构体
网上很多人写到,timeval结构解释错误*******************************************************************问题如下:在debian linux的man页中对gettimeofday函数的说明中,有这样一个说明:DESCRIPTION The functions gettimeofday an转载 2016-07-13 15:15:29 · 903 阅读 · 0 评论 -
测试linux下磁盘的读写速率
1) 通过df -h命令查看磁盘情况Filesystem Size Used Avail Use% Mounted on/dev/sda4 289G 61G 214G 23% /tmpfs 7.8G 0 7.8G 0% /dev/shm/dev/sda2 9原创 2016-07-14 14:37:32 · 21250 阅读 · 0 评论 -
Linux shell 之 提取文件名和目录名的一些方法
很多时候在使用Linux的shell时,我们都需要对文件名或目录名进行处理,通常的操作是由路径中提取出文件名,从路径中提取出目录名,提取文件后缀名等等。例如,从路径/dir1/dir2/file.txt中提取也文件名file.txt,提取出目录/dir1/dir2,提取出文件后缀txt等。下面介绍两种常用的方法来进行相关的操作。一、使用${}1、${var##*/}转载 2016-07-27 14:00:16 · 1203 阅读 · 0 评论 -
程序的编译、链接与装载
《程序员的自我修养-链接装载与库》是一本值得推荐的书,主要介绍系统软件的运行机制和原理,涉及在Windows和Linux两个系统平台上,一个应用程序在编译、链接和运行时刻所发生的各种事项,包括:代码指令是如何保存的,库文件如何与应用程序代码静态链接,应用程序如何被装载到内存中并开始运行,动态链接如何实现,C/C++运行库的工作原理,以及操作系统提供的系统服务是如何被调用的。本文主要对书中涉及L转载 2016-07-28 16:12:25 · 4592 阅读 · 0 评论 -
glibc和libc的区别
glibc和libc都是Linux下的C函数库,那么到底有什么区别呢?见到Linux下好多的库函数,曾经令我困惑,其实他们是有章可循的。libc是Linux下的ANSI C的函数库;glibc是Linux下的GUN C函数库;ANSI C和GNU C有什么区别呢?ANSI C是基本的C语言函数库,包含了C语言最基本的库函数。这个库可以根据 头文件划分为转载 2016-06-22 15:56:30 · 1992 阅读 · 0 评论