shell 简单的实现守护进程

单纯的使用 &命令 + ctrl+D退出终端
原理:
关闭终端有两种方式,一种是点叉,这时候,你关闭的是gnome-terminal这个进程,而Bash是它的子进程,它会将Bash杀死,而Bash的所有子进程都会因为
父进程死了而同时死掉,所以你直接点叉会导致firefox被关掉。而如果你是在终端里输exit命令或者ctrl-d,实际上是Bash自己退出,bash在自己退出时,
会将自己启动的在后台工作的子进程脱离,然后再退出,因此这种方式不会导致firefox关闭。
nohup firefox
前面懒猫介绍的nohup的方法,原理是这样的,Bash启动了nohup这个进程,nohup这个进程会主动脱离Bash,因此无论用何种方式关闭Bash,都不会导致nohup
这个进程退出,而nohup再启动firefox,firefox的父进程是nohup,因此关闭终端时,firefox也不受影响。 跟系统任务有关的的命令
ctrl-c 发送 SIGINT 信号给前台进程组中的所有进程。常用于终止正在运行的程序。
ctrl-z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程。
ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。
ctrl-\ 发送 SIGQUIT 信号给前台进程组中的所有进程,终止前台进程并生成 core 文件。
Ctrl-s 挂起输出
Ctrl-q 恢复输出
Ctrl-o 抛弃输出
Ctrl-l 清屏
& 把这个命令放到后台执行
jobs 查看当前有多少在后台运行的命令
fg 将后台中的命令调至前台继续运行
如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
bg 将一个在后台暂停的命令,变成继续执行
如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid) 杀死僵尸进程
#ps -A -o stat,ppid,pid,cmd |grep -e "^[Zz]"    //先查看具体进程:
#kill - ppid号         //杀死z进程(这些动作是比较危险的,希望在真正的服务器上面慎用!!!) 假若你的z进程比较多,可以编写个小小的脚本,下面是参与网上的
#ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -
Tlist
vim 折叠
set foldmethod=indent "set default foldmethod
"zi 打开关闭折叠
"zv 查看此行
zm 关闭折叠
zM 关闭所有
zr 打开
zR 打开所有
zc 折叠当前行
zo 打开当前折叠
zd 删除折叠
zD 删除所有折叠 time -p (command) 查看进程的实际时间,用户时间,系统时间
eval会对后面的cmdLine进行两遍扫描,如果第一遍扫描后,cmdLine是个普通命令,
则执行此命令;如果cmdLine中含有变量的间接引用,则保证间接引用的语义。 cvs up -A 更新主干分支
cvs co qnet
./setup.sh first
./rpcgen ? 不在cvs中
A 新增加(在本地增加了,但是还没有commit)
C 冲突(发生冲突;可能两个人同时编辑了同一份文件)
M 修改(修改但还未提交搜索)
P 补丁(类U;与U相比,传递更少的数据量)
U 更新(更新本地文件或是新下载一个文件)
R 删除(已删除文件但还未COMMIT) vimdiff file1 file2 对比文件 .killall用于杀死指定名字的进程
killall - name
vim 查看修改文件编码:
set fileecoding
set fileecoding=utf-
.vim 使用
vim 查找,/向下查找 ?向下查找 n 继续查找
利用 :s 命令可以实现字符串的替换。具体的用法包括:
:s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1
:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1
:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1
:,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1
:g/str1/s//str2/g 功能同上 tag 用法
ctags -R –c++-kinds=+px –fields=+iaS –extra=+q
每个参数解释如下:
-R:ctags循环生成子目录的tags
–c++-kinds=+px :ctags记录c++文件中的函数声明和各种外部和前向声明
–fields=+iaS :ctags要求描述的信息,其中i表示如果有继承,则标识出父类;a表示如果元素是类成员的话,
要标明其调用权限(即是public还是private);S表示如果是函数,则标识函数的signature。
–extra=+q:强制要求ctags做如下操作—如果某个语法元素是类的一个成员,ctags默认会给其记录一行,
可以要求ctags对同一个语法元素再记一行,这样可以保证在VIM中多个同名函数可以通过路径不同来区分。
ctags -R
ctrl + ] 查找定义
ctrl + t 回跳
gd 在VIM里输入gd的话,就会跳到这个局部变量的定义处
ctrl + g 显示当前文件名
gg 跳转到第一行
G 跳转到最后一行 如果想要递归查找所有下级目录里面,那么就用
:vimgrep word **
//vim7才有的东西
u 撤销上一步的操作
Ctrl+r 恢复上一步被撤销的操作 复制粘贴
yy复制游标所在行整行。或大写一个Y。
2yy或y2y复制两行。 ㄟ ,请举一反三好不好! :-)
y^复制至行首,或y0。不含游标所在处字元。
y$复制至行尾。含游标所在处字元。
yw复制一个word。
y2w复制两个字(单词)。
yG复制至档尾。
y1G复制至档首。
p小写p代表贴至游标后(下)。
P大写P代表贴至游标前(上)。
如果只是想使用系统粘贴板的话直接在输入模式按Shift+Inset就可以了 .shell 使用
查看系统 uname -a
在非root用户下安装软件
.添加执行权限 chmod +x ./configure
.更改用户安装目录 ./configure --prefix=$HOME
退出命令:
ctrl+c ctrl+d
cscope -Rbkq 特殊字符:
# 注释
; 命令分隔符
;; 终止case选项
&> 重定向stderr到stdout i>&j
> 重定向
>> 重定向并追加
&>filename 重定向stderr,stdout到filename
>&j 重定向说stdout到j
< 或 < 输入
[j] <> filename 打开filename并把它给fd j
| 管道
n<&- 关闭输入文件描述符
<&- ,<&- 关闭stdin
n>&- 关闭输出文件描述符n
>&- >&- 关闭stdout
exec <& 将文件描述符6与stdin链接起来
S:进程状态
D=可中断睡眠
R=运行中
S=睡眠
T=已跟踪或已停止
Z=僵死
linux 进程信号
挂起 . 中断 ,停止 强制终止 。。
kill pid
killall pname

linux 使用总结的更多相关文章

  1. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

  2. Linux 内核概述 - Linux Kernel

    Linux 内核学习笔记整理. Unix unix 已有40历史,但计算机科学家仍认为其是现存操作系统中最大和最优秀的系统,它已成为一种传奇的存在,历经时间的考验却依然声名不坠. 1973 年,在用 ...

  3. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  4. NodeJs在Linux下使用的各种问题

    环境:ubuntu16.04 ubuntu中安装NodeJs 通过apt-get命令安装后发现只能使用nodejs,而没有node命令 如果想避免这种情况请看下面连接的这种安装方式: 拓展见:Linu ...

  5. [linux]阿里云主机的免登陆安全SSH配置与思考

    公司服务器使用的第三方云端服务,即阿里云,而本地需要经常去登录到服务器做相应的配置工作,鉴于此,每次登录都要使用密码是比较烦躁的,本着极速思想,我们需要配置我们的免登陆. 一 理论概述 SSH介绍 S ...

  6. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  7. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  8. SQL Server on Linux 理由浅析

    SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...

  9. Microsoft Loves Linux

    微软新任CEO纳德拉提出的“Microsoft Loves Linux”,并且微软宣布.NET框架的开源,近期Microsoft不但宣布了Linux平台的SQL Server,还宣布了Microsof ...

  10. Linux 江湖系列阶段性总结

    引言 我使用 Linux 已经有很多年了,最开始接触 Linux 的时候是从 RedHat 9(没有 Enterprise),中途换过 N 个不同的发行版.多年前,我在 BlogJava 上面分享 J ...

随机推荐

  1. setTimeout()基础/setInterval()基础

    JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成.它们向任务队列添加定时任务.初始接触它的人都觉得好简单 ...

  2. python中给程序加锁之fcntl模块的使用

    python 中给文件加锁——fcntl模块import fcntl 打开一个文件##当前目录下test文件要先存在,如果不存在会报错.或者以写的方式打开f = open('./test')对该文件加 ...

  3. scikit-learn(project中用的相对较多的模型介绍):2.3. Clustering(可用于特征的无监督降维)

    參考:http://scikit-learn.org/stable/modules/clustering.html 在实际项目中,我们真的非常少用到那些简单的模型,比方LR.kNN.NB等.尽管经典, ...

  4. 非标准USBasp下载线烧录Arduino BootLoader的参数设置

    本文仅适用于BootLoader损坏且买到国产“免驱USBasp下载线”导致Arduino IDE无法识别从而不能烧写的情况.是一种略显非主流的操作方式. 因为Arduino的IDE并不支持这种免驱的 ...

  5. 如何运用spring将dao注入到servlet中?

    1.servlet的init方法 public void init(ServletConfig config) throws ServletException { super.init(config) ...

  6. 01 http协议概念及工作流程

    一:HTTP协议 重要性: 无论是以后用webserverice ,还是用rest做大型架构,都离不开对HTTP协议的认识. 甚至可以简化的说: webservice = http协议+XML Res ...

  7. KVC基本使用

    首先,创建两个类.person类和book类.如图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/ ...

  8. [nio]dawn的基本概念

    1.dawn是单线程的: 为什么单线程?现实中非常多程序都是单线程的.比方redis,memcache,nodejs.mmorpgserver..... . 採用单线程有两大优点,首先,不须要使用锁, ...

  9. 【BZOJ3864】Hero meet devil DP套DP

    [BZOJ3864]Hero meet devil Description There is an old country and the king fell in love with a devil ...

  10. 升级webapi依赖的Newtonsoft.json的版本(转)

    随着微软日渐重视开源社区的贡献,微软在自己的产品中往往也会集成开源的第三方库. 比如System.Net.Http.Foramatting.dll 就依赖于Newtonsoft.json v4.5. ...