perl 语言学习总结
2015-11-23 13:35
295 查看
shell 简单的实现守护进程 1.借助eval命令 eval "./run >file 2>&1 &" 2.单纯的使用 &命令 + 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 -9 ppid号 //杀死z进程(这些动作是比较危险的,希望在真正的服务器上面慎用!!!) 假若你的z进程比较多,可以编写个小小的脚本,下面是参与网上的 #ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9 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中含有变量的间接引用,则保证间接引用的语义。 基本 gdb 命令. 命 令 描 述 小结:常用的gdb命令 backtrace 显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where) breakpoint 在程序中设置一个断点 cd 改变当前工作目录 clear 删除刚才停止处的断点 commands 命中断点时,列出将要执行的命令 continue 从断点开始继续执行 delete 删除一个断点或监测点;也可与其他命令一起使用 display 程序停止时显示变量和表达时 down 下移栈帧,使得另一个函数成为当前函数 frame 选择下一条continue命令的帧 info 显示与该程序有关的各种信息 jump 在源程序中的另一点开始运行 kill 异常终止在gdb 控制下运行的程序 list 列出相应于正在执行的程序的原文件内容 next 执行下一个源程序行,从而执行其整体中的一个函数 print 显示变量或表达式的值 pwd 显示当前工作目录 pype 显示一个数据结构(如一个结构或C++类)的内容 quit 退出gdb reverse-search 在源文件中反向搜索正规表达式 run 执行该程序 search 在源文件中搜索正规表达式 set variable 给变量赋值 signal 将一个信号发送到正在运行的进程 step 执行下一个源程序行,必要时进入下一个函数 undisplay display命令的反命令,不要显示表达式 until 结束当前循环 up 上移栈帧,使另一函数成为当前函数 watch 在程序中设置一个监测点(即数据断点) whatis 显示变量或函数类型 cvs up -A 更新主干分支 cvs co qnet ./setup.sh first ./rpcgen ? 不在cvs中 A 新增加(在本地增加了,但是还没有commit) C 冲突(发生冲突;可能两个人同时编辑了同一份文件) M 修改(修改但还未提交搜索) P 补丁(类U;与U相比,传递更少的数据量) U 更新(更新本地文件或是新下载一个文件) R 删除(已删除文件但还未COMMIT) 编译 cd / make clean make -j8 ps ax | grep xxx 查找某进程 beginnet CVS UP -A 更新文件 vimdiff file1 file2 对比文件 0.killall用于杀死指定名字的进程 killall -9 name vim 查看修改文件编码: set fileecoding set fileecoding=utf-8 1.vim 使用 vim 查找,/向下查找 ?向下查找 n 继续查找 利用 :s 命令可以实现字符串的替换。具体的用法包括: :s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1 :s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1 :.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1 :1,$ 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就可以了 2.shell 使用 查看系统 uname -a 在非root用户下安装软件 1.添加执行权限 chmod +x ./configure 2.更改用户安装目录 ./configure --prefix=$HOME 退出命令: ctrl+c ctrl+d cscope -Rbkq 1.查找命令 find . -print|xargs grep xxxx find . -type f -name *.log -mtime +300 查找300天前的后缀名为log的文件 1.find find . -name 'my*' 搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。 find . -name 'my*' -ls 搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。 find . -type f -mmin -10 搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录 2.locate locate /etc/sh 搜索etc目录下所有以sh开头的文件。 locate ~/m 搜索用户主目录下,所有以m开头的文件。 locate -i ~/m 搜索用户主目录下,所有以m开头的文件,并且忽略大小写。 3.whereis whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、 man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。 whereis命令的使用实例: $ whereis grep 4. which which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置, 并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系 统命令是否存在,以及执行的到底是哪一个位置的命令。 which命令的使用实例: $ which grep 5. type type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的, 还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么 使用-p参数,会显示该命令的路径,相当于which命令。 type命令的使用实例: $ type cd 系统会提示,cd是shell的自带命令(build-in)。 $ type grep 系统会提示,grep是一个外部命令,并显示该命令的路径。 $ type -p grep 加上-p参数后,就相当于which命令。 2.压缩打包文件: 查看 tar -tf aaa.tar.gz 在不解压的情况下查看压缩包的内容 压缩 tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2 tar –cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z 解压 tar –xvf file.tar //解压 tar包 tar -xzvf file.tar.gz //解压tar.gz tar -xjvf file.tar.bz2 //解压 tar.bz2tar –xZvf file.tar.Z //解压tar.Z tar zxvf mysql.tar.gz -C /home/aaa //解压到指定目录 总结 1、*.tar 用 tar –xvf 解压 2、*.gz 用 gzip -d或者gunzip 解压 3、*.tar.gz和*.tgz 用 tar –xzf 解压 4、*.bz2 用 bzip2 -d或者用bunzip2 解压 5、*.tar.bz2用tar –xjf 解压 6、*.Z 用 uncompress 解压 7、*.tar.Z 用tar –xZf 解压 3 特殊字符: # 注释 ; 命令分隔符 ;; 终止case选项 2&>1 重定向stderr到stdout i>&j > 重定向 >> 重定向并追加 &>filename 重定向stderr,stdout到filename >&j 重定向说stdout到j 0< 或 < 输入 [j] <> filename 打开filename并把它给fd j | 管道 n<&- 关闭输入文件描述符 0<&- ,<&- 关闭stdin n>&- 关闭输出文件描述符n 1>&- >&- 关闭stdout exec 6<&0 将文件描述符6与stdin链接起来 S:进程状态 D=可中断睡眠 R=运行中 S=睡眠 T=已跟踪或已停止 Z=僵死 linux 进程信号 1 挂起 2. 中断 3,停止 9 强制终止 。。 kill pid killall pname
相关文章推荐
- HDU2045不容易系列之(3)—— LELE的RPG难题
- 分布式与集群的联系与区别
- java 输出一个目录下所有文件信息(包含子文件)
- 值传递和引用传递的区别
- python 开发中易混淆点
- bootstrap模态弹出框
- linux 使用总结
- php设置编码格式的方法
- 第十三章 包和引用
- 找个大牛拿shell,网站权限,数据,重酬
- android DatePicker、TimePicker
- Centos安装nmon软件
- Xcode 7 UI 测试初窥
- LeetCode(290) Word Pattern
- iOS如何快速安装CocoaPods
- Bregman散度和马氏距离----衡量对象间相似性和相异性
- Linux-Oracle
- linux 下实现守护进程的几种方法
- LeetCode(290) Word Pattern
- ztree简单的使用