linux系统

Linux下捕捉信号

梦想的初衷 提交于 2020-03-31 00:37:39
关于 信号signal的知识铺垫 点这里 信号由三种处理方式: 忽略 执行该信号的默认处理动作 捕捉信号 如果信号的处理动作是用户自定义函数,在信号递达时就调用这个自定义函数,这称为 捕捉信号 。 进程收到一个信号后不会被立即处理,而是在恰当时机进行处理!即 内核态返回用户态之前 ! 但是由于信号处理函数的代码在用户空间,所以这增加了内核处理信号捕捉的复杂度。 内核实现信号捕捉的步骤: 用户为某信号注册一个信号处理函数sighandler。 当前正在执行主程序,这时候因为中断、异常或系统调用进入内核态。 在处理完异常要返回用户态的主程序之前,检查到有信号未处理,并发现该信号需要按照用户自定义的函数来处理。 内核决定返回用户态执行sighandler函数,而不是恢复main函数的上下文继续执行!(sighandler和main函数使用的是不同的堆栈空间,它们之间不存在调用和被调用的关系,是两个独立的控制流程) sighandler函数返回后,执行特殊的系统调用sigreturn从用户态回到内核态 检查是否还有其它信号需要递达,如果没有 则返回用户态并恢复主程序的上下文信息继续执行。 signal 给某一个进程的某一个信号(标号为signum)注册一个相应的处理函数,即对该信号的默认处理动作进行修改,修改为handler函数指向的方式; #include <signal.h>

01. 嵌入式Linux shell基础指令

扶醉桌前 提交于 2020-03-30 22:56:51
(1) ls (list,列表)   作用:使用列表把当前文件夹下所有文件显示出来 ls -a 显示所有文件,包括隐藏文件(以“.”开头的文件) ls -l 详细信息显示文件 ls -a -l ls -l -a ls -la (2) cd (change directory,更改目录)   作用:用来切换目录,涉及到相对路径和绝对路径   cd .. .. 代表上一层目录    . 代表当前目录 (3) pwd (print work directory,打印工作目录)   作用:打印出当前的绝对路径 (4) mkdir (make directory,创建文件夹)   作用:创建空文件夹,mkdir -p pathname 级联创建文件夹,例如file/file1/file2 (5) mv (move,移动)   作用:在目录间移动文件,重命名文件 mv 源文件pathname 目的文件pathname (6) rmdir (remove directory,删除文件夹)   作用:删除空文件夹   rmdir和rm -r的区别:rmdir只能删除空文件夹,而rm -r可以删除空文件夹和非空文件夹 (7) touch   作用:创建空文件 touch pathname (8) cp (copy,复制)   作用:复制文件或文件夹 cp 源文件pathname

Linux硬链接和软链接

Deadly 提交于 2020-03-30 21:56:13
硬链接和软连接 硬链接: 硬链接是指通过索引节点来进行转换,在Linux的文件系统中,保存在磁盘分区中的文件 不管是什么类型都会给它分配一个编号,这个编号被称为索引节点(Inode Index)或者成为Inode 在Linux系统中,多个文件中指向同一个索引节点(Inode)是正常允许的。一般这种链接就成为硬链接。硬链接的作用之一是允许一个多文件拥有多个 有效路径名,这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据(很多硬件,如netapp存储中的快照功能就应用了这个原理,增加了一个快照就多了一个硬链接)。问什么文件建立了硬链接就会放置数据删除呢? 因为文件系统的原理是,只要文件名指向统一索引节点(Inode)还有一个以上的链接(仅仅删除了该文件指向)。只删除其中一个链接并不影响索引节点本身和其它的链接(既数据文件指向)。只删除一个链接并不影响索引节点本身和其它的链接(既数据文件实体并未被删除),只有当最后一个链接被删除后,此时如果有新数据要存储到硬盘时被删除文件的数据块及目录的链接才会被释放,空间被新数据占用覆盖。此时,数据就再也无法找回了。也就是说,在linux系统中,删除文件(其实目录也是文件)的添加是于之相关的所有硬链接文件均被删除。 软链接: 软链接有时也被称为符号链接(Symbolic Link)。软链接文件就类型与Windows系统中的快捷文件

解决Centos7安装docker源问题

戏子无情 提交于 2020-03-30 21:56:01
根据官方文档: https://docs.docker.com/install/linux/docker-ce/centos/搭建docker 1.卸载docker旧版本: sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine\ 2.安装相关工具类: sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 3.配置docker仓库: sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo 会报以下错误: Loaded plugins: fastestmirror adding repo from: https://download.docker.com/linux/centos/docker-ce.repo grabbing file

EXSI上安装Windows、linux系统

喜欢而已 提交于 2020-03-30 20:55:36
exsi主机上右键新建虚拟机,自己建 在虚拟机上装操作系统,Windows或linux,两种装法: 1在esxi主机上用物理光驱装 2在vclient、vcenter客户端上,通过网络将iso文件存放到数据存储空间,再从虚拟机引导系统 建议第二种装法:(注意找按钮) 一:选中esxi主机——配置——存储器——数据存储文件选中——右键浏览数据存储存储器——新建文件夹(文件名自拟)——选中你所建立的文件夹,将文件上载到此数据存储;到此数据存储空间中已有我们要装系统的iso文件。 二:选中所建虚拟机——编辑虚拟机设置,打开虚拟机属性窗口——硬件标签下选中CD/DVD驱动器——打开数据存储iso文件,浏览在datastore下找到上传的iso镜像包,确定——打勾打开电源时连接;到此系统引导文件已装载好。 三:第三步打开虚拟机装载系统,选中虚拟机右键打开控制台,打开电源即可 来源: 51CTO 作者: sunny1034207200 链接: https://blog.51cto.com/11479356/2062483

Linux三剑客 grep、awk、seed

佐手、 提交于 2020-03-30 19:39:05
简介 grep:适合单纯的查找或匹配文本 sed:适合编辑文本 awk:适合格式化文本,对文本进行复杂的格式化处理 1.grep   grep -help   【options】   -c:只输出匹配行的计数   -i:不区分大小写   -h:查询多文件是不显示文件名   -l:查询多文件时只输出包含匹配字符的文件名   -m:显示匹配行及行号   -s:不显示不存在或无匹配文本的错误信息   -v:显示不包含匹配文本的所有行   -color=auto:可以将找到的关键词部分加上颜色的显示   【pattern】正则参数含义   \:忽略正则表达式中特殊字符的原有含义   ^:匹配正则表达式的开始   $:匹配正则表达式的结束   \<:从匹配正则表达式的行开始   \>:到正则表达式的行结束   []:单个字符ex:[a]即a符合   [-]:范围ex:[a-c],即a,b,c符合   .:所有单个字符   *:有字符,长度可以为0   【简单使用】匹配的是当前文件夹下   grep ‘test’ d* 显示所有以d开头的文件中包含test的行   grep ‘test’ aa bb cc 显示在aa,bb,cc文件中匹配test的行   grep ‘[a-z]\{5\}’ aa 显示在aa文件中所有包含每个字符串至少有连续5个小写字符的字符串的行   grep 'w\(es\

linux防火墙查看状态firewall、iptable

陌路散爱 提交于 2020-03-30 19:37:38
linux防火墙查看状态firewall、iptable 一、iptables防火墙 1、基本操作 # 查看防火墙状态 service iptables status # 停止防火墙 service iptables stop # 启动防火墙 service iptables start # 重启防火墙 service iptables restart # 永久关闭防火墙 chkconfig iptables off # 永久关闭后重启 chkconfig iptables on   2、开启80端口 vim /etc/sysconfig/iptables # 加入如下代码 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 保存退出后重启防火墙 service iptables restart 二、firewall防火墙 1、查看firewall服务状态 systemctl status firewalld 出现Active: active (running)切高亮显示则表示是启动状态。 出现 Active: inactive (dead)灰色表示停止,看单词也行。 2、查看firewall的状态 firewall-cmd --state 3、开启、重启、关闭、firewalld.service服务 #

Linux netstat 命令详解

拜拜、爱过 提交于 2020-03-30 19:07:02
Linux netstat命令用于显示网络状态。 利用netstat指令可让你得知整个Linux系统的网络情况。 语法: netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip] 参数说明: -a或--all 显示所有连线中的Socket。 -A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址。 -c或--continuous 持续列出网络状态。 -C或--cache 显示路由器配置的快取信息。 -e或--extend 显示网络其他相关信息。 -F或--fib 显示FIB。 -g或--groups 显示多重广播功能群组组员名单。 -h或--help 在线帮助。 -i或--interfaces 显示网络界面信息表单。 -l或--listening 显示监控中的服务器的Socket。 -M或--masquerade 显示伪装的网络连线。 -n或--numeric 直接使用IP地址,而不通过域名服务器。 -N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。 -o或--timers 显示计时器。 -p或--programs 显示正在使用Socket的程序识别码和程序名称。 -r或--route 显示Routing Table。 -s或--statistice 显示网络工作信息统计表。 -t或--tcp

Linux下安装Zookeeper

删除回忆录丶 提交于 2020-03-30 18:51:42
Linux下安装Zookeeper Zookeeper简介 中间件,提供协调服务 作用于分布式系统,发挥其优势,可以为大数据服务 支持java,提供了java和c语言的客户端API zookeeper,中文意思就是动物园管理员,通过zookeeper(群)来管理协调各个集群的分布式组件。 官网: https://zookeeper.apache.org/ Zookeeper特性 一致性: 数据一致性,数据按照顺序分批入库 原子性: 事务要么成功要么失败,不会局部化 单一视图: 客户端连接集群中的任一zk节点,数据都是一致的 可靠性: 每次对zk的操作状态都会保存在服务端 实时性: 客户端可以读取到zk服务端的最新数据 安装步骤: 1: 首先确保已经安装好了jdk,因为zookeeper是需要依赖java来进行编译的。 下载zookeeper: 进入官网,点击导航菜单 Project-->Releases ,可以选择指定版本进行下载。 也可以使用命令直接下载: # 直接使用命令下载 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz # 解压缩 tar -zxvf zookeeper-3.4.11.tar.gz 环境变量配置: 编辑环境变量配置文件: vi

linux系统中Rsync文件同步方案

一曲冷凌霜 提交于 2020-03-30 17:21:51
linux服务器下Rsync文件同步配置 Rsync(remote synchronize) 远程数据同步工具,可以使用“Rsync算法” 同步本地和远程主机之间的文件、Rsync的好处是只同步两个文件不同的部分, 相同的部分不在传递、类似于增量备份,这使的在服务器传递备份文件或者同步文件。 crontab配合rsync 使用可达到定时备份同步任务。 Rsync部署环境 1、服务器准备 | Host | IP | ----------| | Server | 192.168.60.110 | ----------| | client | 192.168.60.80 | ----------| 2、Server 2.1、ubuntu 16.04默认已安装rsync,直接修改它的配置文件即可。 sudo vim /etc/default/rsync RSYNC_ENABLE=true #false改true 3、修改配置文件 3.1、 rsync佩在文件默认在/usr/share/doc/rsync/examples/下,需要手动将配置文件拷贝到/etc目录下, sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc 3.2、修改conf配置文件。 sudo vim /etc/rsyncd.conf #motd file=/etc