• linux 使用总结


    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 -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中含有变量的间接引用,则保证间接引用的语义。
    
    cvs up -A  更新主干分支
    cvs co qnet
    ./setup.sh first
    ./rpcgen
    
    ?    不在cvs中
    A    新增加(在本地增加了,但是还没有commit)
    C    冲突(发生冲突;可能两个人同时编辑了同一份文件)
    M    修改(修改但还未提交搜索)
    P    补丁(类U;与U相比,传递更少的数据量)
    U    更新(更新本地文件或是新下载一个文件)
    R    删除(已删除文件但还未COMMIT)
    
    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
    
    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
  • 相关阅读:
    Quartz 基本概念及原理
    quartz-2.2.x 快速入门 (1)
    hive踩过的小坑
    spring profile 多环境配置管理
    win10窗口设置眼睛保护色
    优雅地在markdown插入图片
    Using Spring Boot without the parent POM
    isDebugEnabled作用
    Log 日志级别
    为什么要使用SLF4J而不是Log4J
  • 原文地址:https://www.cnblogs.com/zendu/p/4988199.html
Copyright © 2020-2023  润新知