Linux中归档、备份和进程管理命令具体有哪些用法?

摘要:指令:ps、kill、tar、zip、gzip、unzip、rsync、scp、nohup、rz、sz 进程: ps #查看进程信息ps -A #查看当前有哪些进程ps -f #参数-f可以显示包含更多的列ps -e #显示系统所有进程信息
指令:ps、kill、tar、zip、gzip、unzip、rsync、scp、nohup、rz、sz 进程: ps     #查看进程信息 ps -A   #查看当前有哪些进程 ps -f   #参数-f可以显示包含更多的列 ps -e   #显示系统所有进程信息 ps -ax    #同上 ps -aux #显示比较完整的进程信息。 ps -eal  #显示进程的完整信息,包括进程状态等。 ps -ealf  #同上 字段说明: USER: 运行进程的用户 PID: 进程ID PPID:父进程PID %CPU: CPU占用率 %MEM: 内存占用率 VSZ: 占用虚拟内存 RSS: 占用实际内存 驻留内存 TTY: 进程运行的终端 STAT: 进程状态 man ps (/STATE)   R 运行   S 可中断睡眠 Sleep   D 不可中断睡眠   T 停止的进程   Z 僵尸进程   X 死掉的进程   Ss s进程的领导者,父进程   S< <优先级较高的进程   SN N优先级较低的进程   R+ +表示前台的进程组   Sl 以线程的方式运行 START: 进程的启动时间 TIME: 进程占用CPU的总时间 COMMAND: 进程文件,进程名 pstree #树形显示进程 ps -eo “%C : %p : %z : %a”|sort -k5 -nr #按内存从大到小排列进程 ps -eo “%C : %p : %z : %a”|sort -nr    #按cpu利用率从大到小排列进程 ps -o pid,ppid,pgrp,session,tpgid,comm #输出指定的字段 ps -aux --sort -pcpu | less #根据CPU 使用来升序排序 ps -aux --sort -pmem | less #根据 内存使用 来升序排序 ps -u user #查看特定用户的进程 ps -C name 通过进程名和PID过滤,使用 -C 参数,后面跟你要找的进程的名字 ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' #查看僵尸进程 ps -eal | awk '{if($2=="Z") {print $4}}'| sudo kill -9    #清除僵死进程 ps auxw|head -1;ps auxw|sort -rn -k4|head -40 #查看消耗内存最多的前40个进程 ps -ef | grep php-fpm | grep pool | wc -l #查看服务器上一共开了多少的 php-cgi 进程 ps -ef | grep docker #查看docker相关进程 ps -p3150 -L #显示所有id为3150的进程所拥有的线程。 pgrep php-fpm #查找php-fpm的进程id ,跟 ps -ef | grep php-fpm 同理 kill -l       #打印出信号数和信号名称 kill -s SIGNAL PID #向指定进程发送信号,SIGNAL要么为信号数,要么为信号名称,如下:   SIGHUP 1:对控制进程或终端进行挂起检测   SIGINT 2:当按下Ctrl+C时发送该信号   SIGKILL 9:用于强行杀死进程   SIGTERM 15:默认用于终止进程   SIGTSTP 20:当按下Ctrl+Z时发送该信号 kill -s SIGKILL PID #杀死PID对应的进程 kill -9 PID    #同上,杀死PID对应的进程 killall -9 gedit    #通过进程名称杀死进程 killall php-fpm #杀死所有php-fpm进程 pgrep php-fpm | xargs kill -9 #杀死所有php-fpm的进程id,包括主进程和工作进程,pgrep = ps +grep pkill -9 php-fpm # 作用同上, 相当于 pgrep php-fpm | xargs kill -9 pkill php-fpm #同上 ps -ef | grep nginx | grep -v grep | cut -c 9-15 | xargs kill -s 9 #说明如下 说明: “grep firefox”的输出结果是,所有含有关键字“firefox”的进程。 “grep -v grep”是在列出的进程中去除含有关键字“grep”的进程。 “cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。 “xargs kill -s 9”中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -s 9”命令的参数,并执行该命令。“kill -s 9”会强行杀掉指定进程。 压缩 tar 归档命令,不具备压缩功能 tar -zcvf test.tar.gz test/ #将test文件夹做为归档文件 tar -cvf test.tar test #打包一个目录 tar -cf output.tar file1 file2 file3 folder1...    #参数-c表示创建文件,-f表示指定文件。 tar -cf output.tar *.txt             #归档所有.txt文件 tar -rvf file.tar new_file.txt          #向归档文件file.tar追加一个文件。 tar -tf file.tar                  #列出归档文件中的内容 tar -xf file.tar                  #参数-x表示提取文件或文件夹。将内容提取到当前文件夹 tar -xf file.tar -C /data/test    #参数-c表示提取文件到指定目录 tar -xvf file.tar file3 file6    #提取指定的几个文件,忽略其他文件 tar -Af file.tar file2.tar      #合并多个归档文件 tar -tvf file.tar          #查看合并归档文件是否成功 tar -uvvf file.tar        #查看归档文件中某个特定文件的时间戳 tar -df file.tar file1 file2 ...   #比较归档文件中的文件与系统中的同名文件是否有差别。-d打印出差别。 tar -f file.tar --delete file1 file2 ...       #使用--delete选项从归档文件中删除指定的文件 tar --delete --file file.tar file1 file2 ...   #同上 tar -cf file.tar * --exclude "*.txt"      #排除归档中所有.txt文件 tar -cf file.tar * -X list.txt          #排除归档中所有在list.txt中列出的文件。 tar -cf file.tar * --exclude "*.txt" --totals #选项--totals再归档完成后打印出总归档字节数 tar -czvvf file.tar.gz file1 file2 ...      #创建经由gzip压缩过的归档文件 tar -cavvf file.tar.gz file1 file2 ...      #同上 tar -zxvf php-7.2.0.tar.gz -C /data/myfile #解压php-7.2.0.tar.gz 到/data/myfile文件夹下,-C 指定要解压到的目标文件夹 tar选项 -A:将tar文件添加到现有归档的末尾。 -c:创建一个新的归档文件。 -C:解包时指定释放的目标文件夹 -d:使用指定的文件系统比较归档。 -j:用bzip压缩归档。 -r:将文件添加到现有归档的末尾。 -t:列出现有归档的内容。 -u:更新归档。 -x:从现有归档解压文件。 -f:表示使用归档文件。 -v:输出详细信息 -z:用gzip压缩归档。 –delete:从现有归档删除文件。 gzip filename      #压缩文件。删除原文件并生成filename.gz gzip -l test.txt.gz    #列出压缩文件的属性信息 gunzip filename.gz #解压文件。删除filename.gz并生成filename.gz的未压缩形式 gzip参数: -c, --stdout write on standard output, keep original files unchanged -d, --decompress decompress 解压 -f, --force force overwrite of output file and compress links -h, --help give this help -k, --keep keep (don't delete) input files -l, --list list compressed file contents -L, --license display software license -n, --no-name do not save or restore the original name and time stamp -N, --name save or restore the original name and time stamp -q, --quiet suppress all warnings -r, --recursive operate recursively on directories -S, --suffix=SUF use suffix SUF on compressed files -t, --test test compressed file integrity -v, --verbose verbose mode -V, --version display version number -1, --fast compress faster -9, --best compress better --rsyncable Make rsync-friendly archive zip file.zip file      #压缩file文件,生成file.zip压缩文件,压缩完不会删除原文件 zip -r file.zip folder file #对目录和文件进行递归操作 zip file.zip -u newfile #更新file.zip中的内容 zip -d file.zip test.txt #从压缩文件file.zip中删除文件test.txt unzip file.zip      #解压缩文件,解压后不会删除原压缩文件 unzip -l file.zip      #只列出文件中的内容 远程复制备份: rsync (ubuntu安装相关软件包:sudo apt-get install rsync) rsync -av source_path destination_path #以递归方式将源目录复制到目的端,-a表示进行归档,-v表示在stdout打印细节信息及进度 rsync -av source_path username@host:path #将本地的目录递归赋值到远程主机上例如:rsync -av /data/test ubuntu@192.168.0.8:/home/backup rsync -avz source destination      #参数-z表示在网络传输时使用数据压缩 rsync -av /home/test/ /home/backups #复制test目录中的内容到目的端 rsync -av /home/test /home/backups #在目的端创建backups目录并将源端/home/test目录复制到此目录中。 rsync -av /home/test /home/backups/ #将源端/home/test 的内容复制到已有的目录backups中 rsync -avz /home/code /mnt/backup/ --exclude "*.txt"    #选项--exclude将不需要进行更新的文件排除掉 rsync -avz /home/code /mnt/backup/ --exclude-from /data/filelist.txt    #选项--exclude-from将文件filelist.txt中列出的文件排除掉。 rsync -avz source destination --delete    #选项--delete表示复制归档时,删除目的端那些在源端已经不存在的文件。 rsync -Pa -I –size-only –delete –timeout=300 Remote_IP:/home/ubuntu /backup    #使用ssh方式同步远程数据到本地目录 scp:secure copy scp root@192.168.1.132:/data/log.zip /data/test #通过ssh将远程文件拷贝回本地 scp -r root@192.168.1.132:/data/test /data/test #通过ssh将远程目录递归拷贝回本地/data/test目录 scp /data/test.tar.gz ubuntu@192.168.1.75:/data/test #通过ssh将本地文件拷贝到远程主机 scp -P 4588 ubuntu@www.xxx.com:/data/test.zip /data/test #选项-P指定端口将远程主机文件拷贝回本地 其他参数选项: -1 强制scp命令使用协议ssh1 -2 强制scp命令使用协议ssh2 -4 强制scp命令只使用IPv4寻址 -6 强制scp命令只使用IPv6寻址 -B 使用批处理模式(传输过程中不询问传输口令或短语) -C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能) -p 保留原文件的修改时间,访问时间和访问权限。 -q 不显示传输进度条。 -r 递归复制整个目录。 -v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。 -c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。 -F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。 -i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。 -l limit 限定用户所能使用的带宽,以Kbit/s为单位。 -o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式, -P port 注意是大写的P, port是指定数据传输用到的端口号 -S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。 ---------------------------------------------------------------- 定期远程自动增量备份脚本,使用crontab做自动执行 #!/bin/bash find / -mtime 0 ! -type d > /tmp/backup_list 2> /dev/null #找出当天修改的非目录文件,结果重定向到/tmp/backup_list文件中 cd /tmp filename=`data"+%F"` #得到当天日期并赋值给变量 tar -T backup_list zcvf ${filename}.back.tar.gz #以给定文件名归档并压缩文件 #将备份文件上传到远程服务器上 ftp -n<<-ALIST open 192.168.12.12 6789 user xst 123456 binary #设定以二进制方式传输文件 cd /home/xst/backup #进入远程服务器的备份目录 lcd /tmp #进入当前计算机中的/tmp目录 put *.back.tar.gz #推送到远程服务器 bye ALIST rm -f ${filename}.back.tar.gz exit 0 ---------------------------------------------------------------- 后台运行: nohup php test.php & #将php test.php 指令挂到后台执行,并且终端不向系统发送hangup信号,即终端关闭了指令依然执行。 setsid sh test.sh #作用同上,原理是使指令的执行进程不属于当前终端,而是属于init进程。故当前终端(进程)关闭,指令依然执行。 (php test.php &) # 将指令放到括号中,表示用子shell执行。&表示放到后台执行。这样将使指令的执行跳出当前终端进程,作用及原理同上。 上传下载: rz、sz是Linux/Unix同Windows进行ZModem文件传输的命令行工具。优点就是不用再开一个sftp工具登录上去上传下载文件。 sz:将选定的文件发送(send)到本地机器 rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器 安装命令: yum install lrzsz 从服务端发送文件到本地机器: sz filename 从本地机器上传文件到服务端: rz [选项{可加可不加}] -+ 【--append:将文件内容追加到已存在的同名文件】 -a 【--ascii:以文本方式传输】 -b 【--binary:以二进制方式传输,推荐使用】 --delay-startup N 【等待N秒】 -e 【--escape:对所有控制字符转义,建议使用】 -E 【--rename:已存在同名文件则重命名新上传的文件,以点和数字作为后缀】 -p 【--protect:对ZMODEM协议有效,如果目标文件已存在则跳过】 -q 【--quiet:安静执行,不输出提示信息】 -v 【--verbose:输出传输过程中的提示信息】 -y 【--overwrite:存在同名文件则替换】 -X 【--xmodem:使用XMODEM协议】 --ymodem 【使用YMODEM协议】 -Z 【--zmodem:使用ZMODEM协议】 --version 【显示版本信息】 --h 【--help显示帮助信息】 注:rz -y 上传文件时要注意文件为关闭状态 问题: 有时rz上传压缩包等提示乱码上传失败。 是因为上传的文件流中包含某些特殊字符,造成rz提前结束退出。 解决方法: rz -be filename