![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
庚庚911
IT 运维一枚
展开
-
lsyncd实时同步搭建指南——取代rsync+inotify
https://segmentfault.com/a/1190000002737213转载 2020-04-15 11:36:09 · 203 阅读 · 0 评论 -
在Linux中用source,dot(.)和直接用脚本文件名执行shell脚本的区别
用source,dot(.)的方式执行shell脚本的时候,不产生子进程,shell脚本在当前的shell中运行,shell脚本运行完成后,在shell脚本中声明的变量在当前的shell中是可见的.直接用脚本文件名的方式执行shell脚本的时候,产生子进程,shell脚本在子进程中运行,shell脚本运行完成后,在shell脚本中声明的变量在当前的shell中是不可见的.验证过程:在当...转载 2020-01-19 14:01:01 · 496 阅读 · 0 评论 -
剖析生产系统的I/O模式
了解I/O的特点对于优化系统性能非常重要,I/O是顺序的还是随机的,是读操作还是写操作,读写的比例是多少,I/O数据块的大小,这些都是影响性能的关键因素。很多存储设备都基于特定的I/O模式做过调校,通用的测试工具跑分都相当漂亮,然而一到实际环境区别就来了,同样的应用环境下,不同的设备表现可能天差地别。我就见过不同厂商的设备,档次差不多,测试跑分高的那个在生产环境下的IO响应速度却慢了十倍。所以跑分...转载 2019-03-11 09:37:13 · 291 阅读 · 0 评论 -
linux时间同步,ntpd、ntpdate
在Windwos中,系统时间的设置很简单,界面操作,通俗易懂。而且设置后,重启,关机都没关系。系统时间会自动保存在Bios的时钟里面,启动计算机的时候,系统会自动在Bios里面取硬件时间,以保证时间的不间断。 但在Linux下,默认情况下,系统时间和硬件时间,并不会自动同步。在Linux运行过程中,系统时间和硬件时间以异步的方式运行,互不干扰。硬件时间的运行,是靠B...转载 2019-03-04 13:06:12 · 425 阅读 · 0 评论 -
linux内核SMP负载均衡浅析
一 、需求 在《linux进程调度浅析》一文中提到,在SMP(对称多处理器)环境下,每个CPU对应一个run_queue(可执行队列)。如果一个进程处于TASK_RUNNING状态(可执行状态),则它会被加入到其中一个run_queue(且同一时刻仅会被加入到一个run_queue),以便让调度程序安排它在这个run_queue对应的CPU上面运行。一个CPU对应一个r...转载 2019-03-06 12:52:48 · 482 阅读 · 0 评论 -
linux进程调度浅析
操作系统要实现多进程,进程调度必不可少。进程调度是对TASK_RUNNING状态的进程进行调度(参见《linux进程状态浅析》)。如果进程不可执行(正在睡眠或其他),那么它跟进程调度没多大关系。所以,如果你的系统负载非常低,盼星星盼月亮才出现一个可执行状态的进程。那么进程调度也就不会太重要。哪个进程可执行,就让它执行去,没有什么需要多考虑的。反...转载 2019-03-06 12:39:13 · 358 阅读 · 0 评论 -
神奇的vfork
一段神奇的代码在论坛里看到下面一段代码:int createproc();int main(){ pid_t pid = createproc(); printf( "%d\n", pid ); exit( 0 );}int createproc(){ pid_t pid; if ( !(pid = vfork() ) ) { printf( "chil...转载 2019-03-06 12:20:02 · 183 阅读 · 0 评论 -
linux进程状态浅析
众所周知,现在的分时操作系统能够在一个CPU上运行多个程序,让这些程序表面上看起来是在同时运行的。linux就是这样的一个操作系统。在linux系统中,每个被运行的程序实例对应一个或多个进程。linux内核需要对这些进程进行管理,以使它们在系统中“同时”运行。linux内核对进程的这种管理分两个方面:进程状态管理,和进程调度。本文主要介绍进程状态管理,进程调度见《lin...转载 2019-03-06 12:03:54 · 191 阅读 · 0 评论 -
linux异步信号handle浅析
在初学linux编程的时候,一直觉得异步信号handle是个很神奇的东西,用户程序可以使用singal之类的系统调用为某某信号注册一个信号处理函数(handle函数)。程序的二进制代码在内存中都有着确定的执行流程,为什么收到异步信号以后,程序会被“中断”,然后跳转到这个handle函数里面去运行呢?内核怎么有能力让程序做这样的跳转呢,总不可能临时修改程序的可执行代码吧?...转载 2019-03-06 11:54:35 · 1024 阅读 · 0 评论 -
Linux 安全的信号处理方式
信号处理的机制 在 Linux 中,每个进程都拥有两个位向量,这两个位向量共同决定了进程将如何处理信号:一个是pending位向量,它包含了那些内核发送给进程,但还没有被进程处理掉的信号。 另一个是blocked位向量,它包含了那些被进程屏蔽掉的信号。 当内核发送一个信号给进程时,它将会修改进程的pending位向量,譬如说,当内核发送一个SIGINT信号给进程,那么它会将进程的p...转载 2019-03-03 12:16:04 · 780 阅读 · 0 评论 -
【Bash编程】之 协作进程coproc
shell中的协作进程coprocess是指一个shell命令的前面添加了coproc关键字的情形,这个命令是在子shell中异步执行的,就好像在命令的末尾使用了后台命令控制符“&”一样,不同的是,协作进程与其父进程间有双向的管道,提供了一种便利的通信途径。协作进程命令格式如下:coproc [NAME] command [redirections]上述命令用于创建一个名为N...转载 2019-03-04 19:10:40 · 2812 阅读 · 0 评论 -
容易被误读的IOSTAT
iostat(1)是在Linux系统上查看I/O性能最基本的工具,然而对于那些熟悉其它UNIX系统的人来说它是很容易被误读的。比如在HP-UX上 avserv(相当于Linux上的 svctm)是最重要的I/O指标,反映了硬盘设备的性能,它是指I/O请求从SCSI层发出、到I/O完成之后返回SCSI层所消耗的时间,不包括在SCSI队列中的等待时间,所以avserv体现了硬盘设备处理I/O的速度,又...转载 2019-03-11 09:27:06 · 399 阅读 · 0 评论 -
利用BLKTRACE分析IO性能
在Linux系统上,如果I/O发生性能问题,有没有办法进一步定位故障位置呢?iostat等最常用的工具肯定是指望不上的,【容易被误读的iostat】一文中解释过await表示单个I/O所需的平均时间,但它同时包含了I/O Scheduler所消耗的时间和硬件所消耗的时间,所以不能作为硬件性能的指标,至于iostat的svctm更是一个废弃的指标,手册上已经明确说明了的。blktrace在这种场合就...转载 2019-03-11 09:33:52 · 320 阅读 · 0 评论 -
linux最大文件句柄数量总结
写这个文章是为了以正视听,网上的文章人云亦云到简直令人发指。到底最大文件数被什么限制了?too many open files错误到底可以通过什么参数控制?网上的很多文章说的大致步骤是没有错的,大致如下:shell级限制通过ulimit -n修改,如执行命令ulimit -n 1000,则表示将当前shell的当前用户所有进程能打开的最大文件数量设置为1000.用户级限制 ulim...转载 2019-03-29 22:18:36 · 4102 阅读 · 0 评论 -
Linux TTY/PTS概述
当我们在键盘上敲下一个字母的时候,到底是怎么发送到相应的进程的呢?我们通过ps、who等命令看到的类似tty1、pts/0这样的输出,它们的作用和区别是什么呢?TTY历史支持多任务的计算机出现之前在计算机出来以前,人们就已经在使用一种叫teletype的设备,用来相互之间传递信息,看起来像下面这样:+----------+ Physical Line +-----...转载 2019-04-29 12:17:05 · 528 阅读 · 0 评论 -
Linux下tty/pty/pts/ptmx详解
基本概念:1> tty(终端设备的统称):tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。2> pty(虚拟终端):但是如果我们远程telnet到主...转载 2019-04-29 12:20:25 · 737 阅读 · 0 评论 -
Linux 利用hosts.deny 防止暴力破解ssh
转自:https://www.cnblogs.com/hanyifeng/p/5456317.html转载 2019-04-29 22:22:31 · 195 阅读 · 0 评论 -
shell中设置文字输出的颜色及字体格式
ANSI控制码简介ANSI控制码用于在字符显示系统中控制光标移动和字符色彩等,常用于BBS系统中。ANSI ESCAPE SEQUENCES又称为VT100系列控制码,国内译为ANSI控制码。顾名思义,需要VT100系列终端的支持,当然现在已经不在局限于VT100了,包括xterm,linux都能很好完成。ANSI控制码依赖终端,不是依赖语言,所以在shell,perl,c里应用均没有...转载 2019-05-08 22:37:08 · 19022 阅读 · 4 评论 -
Linux内核参数优化
一、Linux文件系统优化内核参数是用户和系统内核之间交互的一个接口,通过这个接口,用户可以在系统运行的同时动态更新内核配置,而这些内核参数是通过Linux Proc文件系统存在的。因此,可以通过调整Proc文件系统达到优化Linux性能的目的1. sysctl命令sysctl命令用来配置与显示在/proc/sys目录中的内核参数.如果想使参数长期保存,可以通过编辑/etc/sysc...转载 2019-09-18 22:09:33 · 626 阅读 · 0 评论 -
浅谈 Linux 的 Zero Copy 技术
mmap 文件映射 通常情况下,我们可以使用read()和write()去访问文件,除此之外,Linux 还提供了mmap()系统调用,它可以将文件映射到进程的地址空间,这样程序就可以通过访问内存的方式去访问文件了。那么与read()和write()相比,使用mmap()去访问文件能带来什么好处呢? 使用mmap()一个明显的好处就是减少一次 I/O 拷贝,譬如说,当我们使用read()...转载 2019-03-03 12:11:07 · 574 阅读 · 0 评论 -
Linux下确认CPU是否开启超线程
超线程(Hyper-Threading,简称“HT”)”技术。超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行效率。超线程技术是在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程,虽然采用超线程技术能同时执行两个线...转载 2019-03-05 19:02:20 · 7487 阅读 · 0 评论 -
调整 Linux I/O 调度器优化系统性能
前言Linux I/O 调度器是Linux内核中的一个组成部分,用户可以通过调整这个调度器来优化系统性能。本文首先介绍Linux I/O 调度器的结构,然后介绍如何根据不同的存储器来设置Linux I/O 调度器从而达到优化系统性能。Linux I/O 系统简介Linux I/O调度器(Linux I/O Scheduler)是LinuxI/O体系的一个组件,它介于通用块层和块设备驱动...转载 2019-02-23 11:28:25 · 1967 阅读 · 0 评论 -
Epoll详解及源码分析
Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn.net/chen19870707 Date:Jan.7th, 2015 1.什么是epollepoll是当前在Linux下开发大规模并发网络程序的热门人选,epoll 在Linux2.6内核中正式引入,和select相似,都...转载 2019-02-17 12:58:20 · 323 阅读 · 0 评论 -
epoll源码分析---sys_epoll_create()函数
eventpoll的优点就不用说了,网上的资料很多,eventpoll的使用也很广泛,特别是在Web服务器中。因为最近要用到epoll,所以好好地看了一下它的实现,把学到的一些东西做下整理,做个记录。一、sys_epoll_create()其源码如下:SYSCALL_DEFINE1(epoll_create, int, size){ if (size <= 0) ...转载 2019-02-17 12:36:39 · 878 阅读 · 0 评论 -
c标准基本库函数:libc、glibc和glib的关系
【glibc 和 libc】 glibc 和 libc 都是 Linux 下的 C 函数库。 libc 是 Linux 下的 ANSI C 函数库;glibc 是 Linux 下的 GUN C 函数库。 ANSI C 和 GNU C 有什么区别呢? ANSI C 函数库是基本的 C 语言函数库,包含了 C 语言最基本的库函数。这个库可以根据头文件划分为 15 个部分,其中包括...转载 2019-02-21 15:35:55 · 1418 阅读 · 0 评论 -
在 Linux 中移除从源代码安装的程序的一种简单的方法
不是所有的程序都可以在官方或者第三方库中找到,因此你不能使用常规的包管理来安装它们。有时你不得不从源代码中手动构建这些程序。就如你已经知道的一样,当你从源代码中安装一个程序的时候,这个软件包所包含的文件将会复制到本地的多个位置,例如 /usr/local/bin、/usr/local/etc/。如果从源代码中安装的程序没有内置的卸载程序,当你不再需要这个程序的时候,卸载它就会很麻烦...转载 2019-01-13 17:02:46 · 326 阅读 · 0 评论 -
nslookup
语法:nslookup [-qt=类型] 目标域名 [指定的DNS服务器IP或域名]1 直接查询这个可能大家用到最多,查询一个域名的A记录和cname。nslookup domain [dns-server]如果没指定dns-server,用系统默认的dns服务器。下面是一个例子:[root@localhost ~]# nslookup baidu.comServe...原创 2018-11-19 22:07:43 · 2184 阅读 · 0 评论 -
ipset详解
ipset介绍 ipset是iptables的扩展,它允许你创建 匹配整个地址集合的规则。而不像普通的iptables链只能单IP匹配, ip集合存储在带索引的数据结构中,这种结构即时集合比较大也可以进行高效的查找,除了一些常用的情况,比如阻止一些危险主机访问本机,从而减少系统资源占用或网络拥塞,IPsets也具备一些新防火墙设计方法,并简化了配置.官网:http://ipset.netfi...转载 2018-10-29 22:03:53 · 1255 阅读 · 0 评论 -
linux下使用man命令查看系统调用
我在阅读《linux系统编程》以及查看网上关于系统函数的博客时,老是看到诸如“详细使用请查看man手册”等等。作为linux菜鸟,刚使用linux时,我们都知道可以用man命令来查看linux命令的用法,但是却不知道怎么查看系统调用函数的用法。方法是: man 2 read 或者是man 3 read。中间的数字是什么意思呢?是man的分卷号,原来man分成很多部分,分别是:1 用户...原创 2019-02-24 17:32:46 · 9027 阅读 · 0 评论 -
linux:SUID、SGID详解
一、UNIX下关于文件权限的表示方法和解析SUID 是 Set User ID, SGID 是 Set Group ID的意思。UNIX下可以用ls -l 命令来看到文件的权限。用ls命令所得到的表示法的格式是类似这样的:-rwxr-xr-x 。下面解析一下格式所表示的意思。这种表示方法一共有十位:9 8 7 6 5 4 3 2 1 0- r w x r - x r - x第...转载 2019-02-24 17:53:20 · 357 阅读 · 0 评论 -
Linux 和 SMP(对称多处理)
在 SMP 系统上发挥 Linux 的功能可以通过多种方法提高 Linux 系统的性能,而其中最流行的一种是提高处理器的性能。一个明显的解决方案是使用具有更快时钟频率的处理器,但是对于任何特定技术来讲都存在一个物理极限,时钟频率也有这样的极限。当达到那个极限时,可使用 “越多越好” 的方法应用多处理器。不幸的是,多处理器的性能并不与单个处理器性能的总和成线性比例。在开始讨论 Linux 中...转载 2019-03-05 18:45:32 · 6425 阅读 · 2 评论 -
(HT)超线程加快了 Linux 的速度
当前的 2.4 和 2.5 版本中的 Linux 对称多处理(SMP)内核都支持超线程,并且已经在多线程基准测试程序中观测到了性能的提高(请参阅本文后面的参考资料以获取含有更多详细信息的文章)。本文提供了我们研究超线程(HT)对 Linux SMP 内核影响的结果。它比较了支持超线程的 Linux SMP 内核和不支持超线程的 Linux SMP 内核的性能。测试中的系统是支持多线程的、单 ...转载 2019-03-05 17:01:32 · 1773 阅读 · 0 评论 -
Linux系统调用列表(CentOS7_X64)
以下的列表来源于64位的CentOS 7系统,详解链接后面会陆续补充。系统中支持的系统调用列表及编号都定义在 /usr/include/asm/unistd.h文件下。 系统调用号 函数名 源代码 功能简介 起始内核版本 详解链接 0 read fs/read_write.c 读文件内容 ------ Linux...原创 2019-02-20 21:20:27 · 1742 阅读 · 0 评论 -
linux - FSCK与日志文件系统
日志文件系统(Journal File System)解决了掉电或系统崩溃造成元数据不一致的问题,细节参见《日志文件系统是怎样工作的》,它的原理是在进行写操作之前,把即将进行的各个步骤(称为transaction)事先记录下来,包括:从data block bitmap中分配一个数据块、在inode中添加指向数据块的指针、把用户数据写入数据块等,这些transaction保存在文件系统...转载 2019-03-05 11:02:58 · 1379 阅读 · 0 评论 -
linux file system 日志文件系统是怎样工作的
文件系统要解决的一个关键问题是怎样防止掉电或系统崩溃造成数据损坏,在此类意外事件中,导致文件系统损坏的根本原因在于写文件不是原子操作,因为写文件涉及的不仅仅是用户数据,还涉及元数据(metadata)包括 Superblock、inode bitmap、inode、data block bitmap等,所以写操作无法一步完成,如果其中任何一个步骤被打断,就会造成数据的不一致或损坏。举一个简化的例子...转载 2019-03-05 10:58:31 · 250 阅读 · 0 评论 -
/etc/fstab格式的问题
[root@localhost etc]# cat fstab /dev/VolGroup00/LogVol00 / ext3 defaults 1 1LABEL=/boot /boot ext3 defaults 1 2tmpfs ...转载 2019-03-05 10:53:19 · 1547 阅读 · 0 评论 -
Linux 系统参数调优 之 文件描述符总数file-max
打开文件数 在 Linux 中,文件描述符是一种资源,为了控制对资源的合理使用,Linux 会限制所有进程所能打开的文件描述符总数。可以通过下面的命令查看:$ cat /proc/sys/fs/file-max99736 通常来说,如果机器的内存越大,那么file-max的默认值也会越大。当然,也可以手动调大它:$ sudo vi /etc/sysctl.co...转载 2019-03-01 12:44:49 · 3801 阅读 · 0 评论 -
用 inotify 监控 Linux 文件系统事件
在 2.6 内核中进行有效且高效的文件系统事件监控在 Linux 内核中对 inotify 进行最后集成之前,我要感谢 IBM 公司 Eli Dow,他写了本文较早的版本。特别要提出的是,在 下载 部分所提供的示例代码,大部分还是基于 Eli 最初的样例代码。inotify 介绍从文件管理器到安全工具,文件系统监控对于的许多程序来说都是必不可少的。从 Linux 2.6.13 内核开始...转载 2018-10-28 23:26:41 · 277 阅读 · 0 评论