linux常用命令笔记

常用  
  ifconfig 查看网卡命令
  shutdown -h now   或者  halt 立刻关机
  shutdown -r now    或者     reboot 立刻重新启动计算机
  logout 注销
  exit 注销当前用户
Kill  
  kill -9 1345 kill 参数 进程号    杀死单个进程,通常配合ps -ef查询到的指定进程号使用,-9:强制
  killall -9 httpd

killall 参数 进程名  杀死httpd的所有进程

  pkill -9 httpd

pkill 参数 进程名   和killall一样,杀死httpd的所有进程

上传下载和安装  
  rpm -ivp apache.rpm rpm可以安装软件,但是后缀必须是rpm的
  yum -y install lrzsz yum后可以使用sz和rz命令(yum是傻瓜式安装)
  sz 文件名 下载文件
  rz 上传
vi命令  
  :q 退出vi
  :q! 不保存退出 强制退出
  :wq 或者 :x 保存退出
  :w 保存
  :wq! 强制保存退出
vi中的光标定位  
  M 移动光标到页面中央
  L 移动光标到页面尾处
  H 移动光标到页面开始处
  Ctrl+f   或者  pgon 向后翻页 (个人习惯键盘的pgon)
  Ctrl+b  或者  pgup 向前翻页 (个人习惯键盘的pgup)
  0 移动光标到行首
  $ 移动光标到行尾
  /: 从上往下开始查找,然后按n寻找下一个
  ?: 从下往上开始查找,然后按n寻找下一个
  /xxx 从上往下开始查找
  ?xxx 从下往上开始查找
  u 撤销
  . 重复前一个动作
  shift + g 到文件末尾
  gg 到文件头部
  dd 删除整行
  yy 复制行
  p  黏贴
  shift + 6  /  home 到行头部
  shift + 4  /  end 到行尾部
   
  set nu  或者  set number 显示行号
   
ls  或者  dir 查看当前目录下文件
    -a 查看目录下的所有文件(包括隐藏文件)
    -C 多列显示输出结果。这是默认选项
    -i 显示目录或文件的inode索引号
    -h 在ls –l的输出中,把文件大小的显示改变为用KB表示(默认为字节)
    -1   与“C”选项功能相反,所有输出信息用单列格式输出,不输出为多列
    -d 仅显示目录名,而不显示目录下的内容列表
    -l

以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等

通常可以写成' ll '

    -R 递归处理,将指定目录下的所有文件及子目录一并处理
  javac helloworld.java 编译
  java helloworld.java 运行
  sh a   ./a 运行
  pwd 当前在哪个目录下
cat  file 只查看文件内容,不能修改
  -n  -n 显示文件行号
  -b -b 显示不为空行的行号
  -s   -s 去除多余空行
  -A  -A 显示文件所有内容,包括换行符($)等
  cat >>/usr/local/tomcat.txt << EOF cat追加文字到文件,保留当前格式,当敲完该命令会进入持续输入模式,再输入EOF结束操作并保持
rm c
  -f 过滤不存在的文件,并忽略删除提示
  -r 递归
  -i 添加提示
  -v     显示信息
  ls | grep -v xxx.log | xargs -i rm -rf {} 在当前目录下除了xxx.log外全部删除
cp 被复制的文件 黏贴的文件 cp(选项) (参数)
  -a 此参数的效果和同时指定“-dpR”参数相同;
  -d 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
  -f 强行复制文件或目录,不论目标文件或目录是否已存在
  -i 覆盖既有文件之前先询问用户,默认下因别名,cp=cp -i
  -p 保留源文件或目录的属性
  -R/-r 递归处理,将指定目录下的所有文件及子目录一并处理
  -v 详细显示命令执行的操作
  cp a.txt b.txt c.txt /usr/local/ 复制多个文件
  cp [a-c].txt /usr/local/ 简易化复制
   
 scp 命令 只针对linux之间数据传递,其基于ssh连接
 
  • -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)的选项。
 
    实例:  scp a.txt rainbol@192.168.1.1:/usr/local 将本机的a.txt文件拷贝到其他linux服务器的/usr/local路径下,当然不指定用户名,需要之后输入用户名和密码
  useradd aaa 添加用户
  passwd  aaa 为用户aaa设置密码
  userdel aaa 删除用户  -r参数表示删除家目录下该用户文件
  usermod -g group_name user_name   修改或者添加用户所在组
  usermod -a -G group_name user_name 追加用户所在组,原组不变
   
   
  su - user 切换用户,-表示重新加载用户的环境变量  su user表示切换用户,不加载用户的环境变量
  who 查看当前已登录用户
  whoami 查看当前用户
grep 查看文件内容
  grep "helloworld" aaa.txt 查看文件中的关键字
  grep -v "helloworld" aaa.txt 排除这个
  grep -n  22567 error_log httpd.pid -n 搜索的内容在第几行
    
  ps -ef|grep tomcat|grep -v grep|awk '{print $2}'|xargs kill -9 删除tomcat所有进程,注意这里awk的引号必须单引号
  xargs 可以理解为一个一个传递
  uniq 去重
    cat b.txt |sort|uniq -c 查看b.txt|sort 排序|去重 重复的有多少数量
    cat access.log |awk '{print $1}'|sort|uniq -c uniq的应用场景
  wc  计数
    cat b.txt |uniq|wc wc的应用场景
查看系统信息  
  cat /etc/redhat-release 查看内核版本
  cat /proc/version 查看正在运行内核版本
  cat /etc/issue 查看发型版本
  uname -a 显示系统信息
  cat /proc/cpuinfo 查看cpu信息
  cat /proc/meminfo 查看内存信息
解压,打包  
  tar -xzvf a.tar tar解压(差不多这个就通用了)
  tar czvf  a.tgz b 把b这个文件夹压缩并打包成为a.tgz

  zip


 
#常用命令选项
-d   从压缩文件内删除指定的文件。
-m   把文件移到压缩文件中。
-0-9 压缩比
-r   递归处理,所有文件和子目录一并处理。
-x<范本样式>   压缩时排除符合条件的文件。
-c   交互为每一个文件设置注释
-z   交互多行注释,英文句话.来表示结束
-e   交互设置密码
-P   直接设置密码
  unzip a.zip  或者 ungzip a.gz zip解压
  
zip test.zip test.txt  #添加压缩文件
zip test.zip test1.txt  #移动文件到压缩包
zip -d test.zip test.txt    #删除test.txt

zip -r test.zip ./*          #压缩当前全部文件到test.zip
zip test2.zip test2/*   #打包目录
zip test3.zip tests/* -x tests/ln.log  #压缩目录,除了tests/ln.log

zip -r test.zip ./* -P 123  #设置密码(明文设置密码不太安全)
zip -r test.zip ./* -e   #交互设置密码(安全)

#设置压缩比
#-0不压缩,-9最高压缩,默认为-6
zip test.zip test.txt -6
打zip包
   
环境变量  
  env   查看环境变量
  vi /etc/profile 配置系统环境变量
  source /etc/profile 启动环境变量
  path = $PATH:/usr/new/a.txt 如果有多个值用:linux中环境变量用分号间隔,如果新定义PATH记得增加$PATH导入系统的环境变量,不然会被覆盖导致系统环境变量不能使用 
  vi ~/.bashrc    或者  vi ~/.bash_profile  配置用户环境变量
   
防火墙  
  service iptables start 打开防火墙
  service iptables stop 关闭防火墙
  systemctl stop firewalld 关闭防火墙
  systemctl start firewalld 打开防火墙
systemctl启动/禁止/自启动  
  systemctl is-enabled xxx.service 查看服务是否开机启动
  systemctl list-unit-files|grep enabled 查看已启动的服务列表
  systemctl --failed 查看启动失败的服务列表
  systemctl disable xxx.service 在开机时禁用服务
  systemctl enable xxx.service 在开机时启用服务
  systemctl status xxx.service 显示服务的状态
  systemctl restart xxx.service 重启服务
  systemctl stop xxx.service 关闭服务
  systemctl start xxx.service 启动服务
linux时间详解  
  hwclock --set --date="06/18/14 14:55" 系统时间
  date 0618141614.30 硬件时间
  clock --show   或者   date 查看系统时间
  /sbin/hwclock 查看硬件时间
  hwclock --hctosys 硬件时间同步系统时间
  hwclcok --systohc 系统时间同步硬件时间
linux查看进程:   ps,aux快照    top实时刷新
  ps:  
    ps -ef | less     或者   ps aux 显示所有运行进程(两者看个人喜爱)
    ps -ef|grep httpd|grep -v grep 查看httpd进程并且把本身grep本身排除掉
          -A 所有进程
          -a  或者  -e 显示终端中包括其他用户的所有进程
        -x 显示无控制终端的进程
          -u vivek 查看用户vivek运行进程
          -eLf 获取线程信息
    UID 用户进程
    PID       父进程
    PPID 守护进程    ***每次看到ppid 不为1的这种 代表一定是有父进程的,杀掉父进程 子进程就不会启动了
    STIME 运行时间
    ? 代表在哪个终端运行 如果没有终端就用?代替
  pstree 以树桩显示与运行进程
  pgrep 进程名 查看此进程号
  which java 查看环境变量中的路径
  uptime 快速查看cpu的负载情况
管道符  
  | 可以理解为一个通道,前面命令查到的内容传递给管道符的后面的命令去操作
查看网络端口状况:  
  netstat -lanp (多一点)
  netstat -tunple    (少一点)
  netstat -lanp | grep 3306 用grep进行过滤得到查看mysql的端口号情况
ss  
ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似。
但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,
而且比 netstat 更快。当服务器的 socket 连接数量变得非常大时,
无论是使用 netstat 命令还是直接 cat /proc/net/tcp,执行速度都会很慢。
ss 命令利用到了 TCP 协议栈中 tcp_diag。tcp_diag 是一个用于分析统计的模块,
可以获得 Linux 内核中第一手的信息,因此 ss 命令的性能会好很多。


-h, --help 帮助
-V, --version  显示版本号
-t, --tcp 显示 TCP 协议的 sockets
-u, --udp 显示 UDP 协议的 sockets
-x, --unix 显示 unix domain sockets,与 -f 选项相同
-n, --numeric 不解析服务的名称,如 "22" 端口不会显示成 "ssh"
-l, --listening 只显示处于监听状态的端口
-p, --processes 显示监听端口的进程(Ubuntu 上需要 sudo)
-a, --all 对 TCP 协议来说,既包含监听的端口,也包含建立的连接
-r, --resolve 把 IP 解释为域名,把端口号解释为协议名称
ss -tnl
查看主机监听的端口
 

 

   
   
   
权限 给文件/文件夹修改权限
  chmod加权限有两种方式,数字方式和文本方式  如  -rw-rw-r--  第1个位置:表示d表示文件夹,-表示文件,第2-4位表示当前用户,第5-7位表示本组用户,第8-10位表示其他用户
  r:读,数字是4        w:写,数字是2         x:执行,数字是1  
  chmod 777 a.sh    7 = 4+2+1就是可读可写可执行的权限,数字就是把那几位加起来
  chmod +x a.sh 所有用户加上执行权限
  chmod +wrx a.sh 加上可读可写可执行的权限,也就是777(rwx不需要按照顺序)
  三个777表示: 第一位代表这个文件所属的用户的权限,第二位代表本组的用户的权限,第三位代表其他用户的权限
    chmod -R a+x abc 为文件abc及其子目录底下的所有文件的全体用户增加x权限
    r:4  w:2  x:1 通过任意相加来表示对应的数字来增加权限
    chmod u-x abc 为abc文件的用户拥有者去除x权限
    u 所有者(当前用户)
    g 同组
    o 其他以外的人
    a 所有
    + 增加权限
    - 去掉权限
    -R 递归,目录下所有文件赋予权限
   
  chown  
find命令详解  linux三剑客之一  
  -or 或者
    find / -name "*.jpg" or -name "*.png"  
  -name 名字查询
    find / -name "*.jpg" 以jpg结尾匹配查询
    find / ! -name "*.jpg" 除了这个以外的所有文件
    find / -name *tomcat* 模糊查找文件
    find / -name tomcat 直接查找
    find / |grep tomcat 全局搜索
  -type  
    find / -type d 搜索所有其子目录路径
             f 文件
                       c 字符设备
                       b 块设备
                       s 嵌套字
                       l 链接
    find /usr/local/tomcat1 -maxdepth 2 -type f 按最大层数查找
                                 -     mindepth +层数 -type d 按最小层数查找
  -size 按文件大小查找
    find / -type f -size -100k 查找小于100k的文件
                       -size +100k 大于100k
                       -size 100k 等于100k
            -size 100M 等于100M兆  注意是大写M
    find /usr/local/tomcat/ -type f -size -100k -size +90k| xargs ls -l 查询之间大小范围并且查看
  -perm 文件权限指数
    find /usr/local/tomcat1/apache-tomcat-7.0.82/ -type f -perm 777 查询权限
  -exec 对匹配的文件执行该参数所给出的shell命令
    find . -type f -exec ls -l {} \;  
    find test/ -name "*.log" -exec  cp {} test5/ \; 部分指定文件的迁移  {}后面放指定路径
    find . -type f -exec ls -l {} \;    find 命令匹配到了当前目录下的所有普通文件,并在 -exec 选项中使用 ls -l 命令将它们列出(后面是固定格式)
  -mtime  
    find /usr -mtime +10 表示修改时间大于10天的文件
                 -mtime 1 表示文件修改时间距离当天为1天的文件  (24小时-48小时之间)
                 -mtime 0 表示文件修改时间距离当天为一天不到的文件(24小时以内)
                 -mtime -1 和-mtime 0一样
sed命令详解  linux三剑客之一 sed是只打印命令,不能修改文件,除非重定向>>
  sed 'p' 文件名 打印文件所有(sed命令自带打印,所有输出两行)
  sed -n 'p' -n忽略默认输出
  nl 文件名 nl命令打印行号
  nl -ba 文件名  把空白行的行号也写进文件中
  sed -n '/sad/p' 文件名 '/字符串/p'正则表达式,打印字符串的那一行
  sed -n '1,10p' 文件名 打印第一行到第十行
  sed -n '1,10!p' 文件名 !表示第一行和第十行都不要,其他打印
  sed -n '4~3p' 4表示从第四行开始,波浪线表示叠加,3表示空三行
整体意思是从第四行开始每隔3个打印一次
  sed '2a----' 文件名 第二行后插入----
  sed '2i----' 文件名 第二行前插入----
  sed '1,3a---' 文件名 在第一行到第三行后面都添加---
  sed '5c----' 文件名 把第五行变成----
  sed '2,5c----' 文件名 把2到5行不包括第5行变成'----'
  sed '2d' 文件名    把第二行去除
  sed '2,5' 文件名 把2到5行去除
  sed '$a xxxxxxxxxxx' 文件名 $代表最后一行a代表增加xxxxxxxxxxx
  sed '$a \     xxxxxxxx' 文件名 命令和字符串中间可以有无限空格用\可以表示真实的空格
  sed -n '$a xxxx' 文件名 >> 另一个文件名 >>重定向(用追加的方式)这个内容(注意-n可以忽略默认输出)
  sed -i '$a xxxx' 文件名 -i可以直接修改文件
  sed -i.bak '$a xxxx' 文件名 -i.bak可以在修改文件之前保存之前的文件防止修改错误,在当前目录下出现了.bak文件
  sed '/^$d/' 文件名 ^表示开头$表示结尾//正则d删除 意思是所有空白行都删除
  sed 's/old/new/' 文件名 替换
  sed '1s#123#456#' 文件名 行替换,  把第一行的123替换为456,看到这次我使用了#号,这个是个人习惯,想用什么特殊字符定义都可以,不一样使用'/',保持一致就行了

  sed '1s#$#123#' 文件名

行替换     加入$为在第一行行尾插入123  如果是行首那么添加^

  sed '5,$s#^#abc#'

行替换  从5行到最后一行的行首插入abc
  sed 's/old/new/g' 文件名 g全局(全部改)
  sed反向引用  
    例:

抓取ip地址

    ifconfig eth0 |sed -n '2p' | sed -r 's#(.*)inet (.*)netmask(.*)#\2#p' | sed -n '1p'   -r参数表示使用正则扩展  \2表示取(.*)中的第几组数据
   
   
awk详解(处理文本)  linux三剑客之一 -F  字段的分隔符,默认为空格(不写为空格),
  awk -F ':' '{print $3}' 文件名 ':'按冒号区分 '{print $3}'打印第三列  (用冒号区分,打印第三列文本内容)可用"and'
  awk -F ':' '{print $1,$3}' 文件名 同理以冒号为区分,打印第一列和第三列(中间自动空格)
  awk -F ':' '{print $1"/t"$3}' 文件名 "/t"拼接字符串
  awk -F ':' '{printf("User:%s  UID:$s",$1,$3)}' 文件名 user和uid可以为任意字符(意义就是显示好看)后面$1对应第一个%s,%3对应第二个%s
  awk -F ':' '{print "User:"$1"\tUID:"$3}' 文件名 print直接后面拼接也可以
  awk '{OFS="|"}{print $1,$2}' test001.txt 将默认值字段分割符改为|
  awk -F ':' '{print NR,NF,FILENAME}' 文件名

NR:每行的行号

NF:字段数量

FILENAME:正在处理的文件名


  awk -F ":" '{if ($3>100) print $1,$3}' 文件名   
显示uid大于100的用户名
  awk -F ":" '{print substr($4,2)}' 文件名 substr函数意思截断字符串,截断(到)第四列中的第一个字符  比如a|bc bc保留a截断
  awk '/asdads/{print substr($4,2)}' 文件名

 

awk在{}外引号里也可以用正则表达式

 

  awk的逻辑判断式  
    awk -F ':' '$1~/^m.*/{print $1}' 文件名 $1~ 表示第一个字符匹配的 //正则表达式   前面正则意思是 (没有以m开头的字符)
    awk -F ':' '$1>100{print $1}' 文件名 如果$1这一列(肯定是数字)大于100的 输出
  awk扩展(制表显示)  
  awk -F ':' 'BEGIN{print "USERS  LINE  COL"}{print $1,$2,$5}END{print "---"FILENAME"----"}' 文件名  
  打印出来一下:  
    USERS                             LINE                                   COL
   1                  213                  2    
  23                23                 2    
  213                23                    2
  213                23                    3
  213                1                   1    
  213                  2                  4   
 
---FILENAME----  
  ls -l -l查看文件大小 -a显示隐藏文件
  ls -al | awk 'BEGIN{count=0}{count+=$5}END{print count}' 显示打印列表的总累加文件大小
磁盘分区  
  sfdisk -l 显示每个设备的分区表信息
  df 查看挂载磁盘空间大小
  df -h 显示成换算后的G、M
  du -h  带有子目录文件 全部展现出来
  du -sh * |sort -rn   -s 文件大小的单位是k 查看当前目录下所有文件占用的空间  -s显示总计  -h以k,M,G单位显示,增加可读性
  如果哪个文件大,继续cd、 df-sh *  进一步查看  
  fdisk -l 查看硬盘状态
定时任务cron  
  yum install vixie-cron   或者  yum install crontabs 用yum安装定时任务命令
  service crond start 开启服务
  service crond stop 关闭服务
  service crond restart 重启服务
  service crond reload 重新载入配置
  service crond status 查看cronttab服务状态
  chkconfig crond on 设置crond服务开机自动启动服务
  chkconfig crond off 设置crond服务开机自动关闭服务
  chkconfig --list crond 查看crond的运行状况
  chkconfig 或者 chkconfig --list 查看所有服务状态
  crontab  
    -u: 只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度;
    -e: 编辑crontab 的工作内容;
    -l: 查阅crontab的工作内容;
    -r: 删除所有的crontab的工作内容,若仅要删除一项,请用-e去编辑。
    特殊字符意义  
    *(星号) 代表任何时刻都接受的意思。举例来说,范例一内那个日、月、周都是*,就代表着不论何月、何日的礼拜几的12:00都执行后续命令的意思
    ,(逗号)    代表分隔时段的意思。举例来说,如果要执行的工作是3:00与6:00时,就会是:
0 3,6 * * * command   时间还是有五列,不过第二列是 3,6 ,代表3与6都适用
    -(减号) 代表一段时间范围内,举例来说,8点到12点之间的每小时的20分都进行一项工作
    20 8-12 * * * command 仔细看到第二列变成8-12.代表 8,9,10,11,12 都适用的意思
    /n(斜线) 那个n代表数字,即是每隔n单位间隔的意思,例如每五分钟进行一次,则:
*/5 * * * * command
用*与/5来搭配,也可以写成0-59/5,意思相同
  注释 可以查看ps -ef |grep cron
    run-parts     /etc/cron.daily [ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]
  实战:  
    /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本
    第一步:写cron脚本文件,命名为crontest.cron  
    15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt 表示,每隔15分钟,执行打印一次命令
    第二步:添加定时任务。执行命令 “crontab crontest.cron”  
    第三步:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本
    第四步 service crond start 启动成功
  每个域之间使用空格或者制表符  
合法值 00-59       00-23        01-31            01-12                0-7 (0 or 7 is sunday)
        minute       hour      day-of-month     month-of-year     day-of-week commands
 
  案例  
    06 * * * * root run-parts /opt/lampp/logs/access_log 每6个小时执行此文件
    02 4 * * * root run-parts /etc/cron.daily 每天执行脚本
清空文件  
  :> 文件名  或者    > 文件名  或者 echo"">文件名  或者 echo > 文件名   或者 cat /dev/null >文件名  或者 truncate -s 0文件  
反引号``  
  反引号``是命令替换 命令替换是指Shell可以先执行``中的命令,将输出结果暂时保存,在适当的地方输出。语法:`command`
就是``里面有linux命令的结果表达出来
  sed -i 's/aaa/AAA' `grep AAA -rl` 意思是``出来的linux结果保存下来,作为前面输出下来找一遍
排序  
  head -n 5 显示第一行到五行的数据
     -c 指定显示头部内容的字符数  head -c 88 a.txt
     -v 总是显示文件名的头信息,显示多个文件时默认选项
       -q 不显示文件名的头信息,显示单个文件时默认选项
  head a.txt b.txt  显示这两个文件的头部内容
  sort 降序    -r 升序
软连接  
  ln -s /opt/lampp/bin/ ~/lbin  软链接到用户根目录,可以通过那样就可以通过~/来执行
  ~/lbin/mysql -uroot -p (lbin为自己起的名字 )
linux终端命令快捷键  
  history 查看历史命令,linux会存到~/.bash_history文件中
    history 10 打印最近10条历史命令
    -c 清空当前历史命令
    -d 清除指定行号的历史输入命令
    -a 将历史命令缓冲区中的命令写入历史命令文件中
    -r 将历史命令文件中的命令读入当前历史命令缓冲区
    -w 将当前历史命令缓冲区命令写入历史命令文件中
    !10 执行历史序号为10的命令
    !! 执行上一条命令
  !num 执行历史命令num为数字
  !! 执行上一条命令
  ctrl+r 历史搜索
  ↑(Ctrl+p) 显示上一条命令
  ↓(Ctrl+n) 显示下一条命令
  →(ctrl+f) 光标右移
  ←(ctrl+b) 光标左移
  ctrl+j或者m 执行命令
  ctrl+l  或者  clear 清屏
  ctrl+k 删除选中光标和之后的所有
  ctrl+h 删除光标前面的字符
  ctrl+d 删除光标选中的字符
  ctrl+n  删除整行
  ctrl+a 移动到当前行开头 
  ctrl+e 移动到当前行结尾
  ctrl+t 当前光标所在位置,与前面一个字符位置对调
linux后台运行命令  
  nohup  
    如:nohup python helloworld.py 不挂起:如果我们链接服务器使用ssh起一个进程,当我们关闭ssh,系统将所有相关进程杀掉,再次打开执行中的任务就取消了,原因是网络断开或终端窗口关闭后,也就是SSH断开以后,控制进程收到SIGHUP信号退出,会导致该会话期内其他进程退出.所以使nohup就能解决问题
  &  
    如:python hellpworld.py & 意思是运行程序直接后台运行
    nohup python helloworld.py & 两者结合,不挂起加后台运行比较实用
  alias(类似于js中的var存变量) 注意这里介绍的alias都是生成临时变量,如果想要永久生效需要设置在bash_profile或者profile中
    alias -p 显示所有别名
    alias aaa='vi /etc/profile' 设置完之后输入aaa就可以进入修改环境变量
    unalias aaa 删除aaa
    type aaa 显示aaa变量的类型
   
curl [option] [url]
 
 
  -I/--head 只显示传输文档,经常用于测试连接本身
  -o/--output 把输出写到该文件中,必须输入保存文件名
  -O/--remote-name 把输出写到该文件中,保留远程文件的文件名
  -F/--form 模拟表单提交
  -s/--silent 静默模式,不输出任何东西
  -S/--show-error 显示错误,在选项 -s 中,当 curl 出现错误时将显示
  -L/--location 跟踪重定向
  -f/--fail 不输出错误
  -n/--netrc 从netrc文件中读取用户名和密码
  --netrc-optional 使用 .netrc 或者 URL来覆盖
  -n --ntlm 使用 HTTP NTLM 身份验证
  -N/--no-buffer 禁用缓冲输出
  -p/--proxytunnel 使用HTTP代理
  --proxy-anyauth 选择任一代理身份验证方法
  --proxy-basic 在代理上使用基本身份验证
  --proxy-digest 在代理上使用数字身份验证
  --proxy-ntlm 在代理上使用ntlm身份验证
  -P/--ftp-port 使用端口地址,而不是使用PASV
  -M/--manual 显示全手动
  -Q/--quote 文件传输前,发送命令到服务器
  -r/--range 检索来自HTTP/1.1或FTP服务器字节范围
  --range-file 读取(SSL)的随机文件
  -R/--remote-time 在本地生成文件时,保留远程文件时间 
  --retry 传输出现问题时,重试的次数
  --retry-delay 传输出现问题时,设置重试间隔时间
  --retry-max-time 传输出现问题时,设置最大重试时间
  --socks4 用socks4代理给定主机和端口
  --socks5 用socks5代理给定主机和端口
  -t/--telnet-option Telnet选项设置
  --trace 对指定文件进行debug
  --trace-ascii Like 跟踪但没有hex输出
  --trace-time 跟踪/ 详细输出时,添加时间戳
  -T/--upload-file 上传文件
  -u/--user 设置服务器的用户和密码
  -U/--proxy-user 设置代理用户名和密码
  -V/--version 显示版本信息
  -w/--write-out [format] 什么输出完成后
  -x/--proxy 在给定的端口上使用HTTP代理
  -X/--request 指定什么命令 -y/--speed-time 放弃限速所要的时间。默认为30
  -Y/--speed-limit 停止传输速度的限制,速度时间'秒
  -z/--time-cond 传送时间设置
  -0/--http1.0 使用HTTP 1.0
  -1/--tlsv1 使用TLSv1(SSL)
  -2/--sslv2 使用SSLv2的(SSL)
  -3/--sslv3 使用的SSLv3(SSL)
  --3p-quote like -Q for the source URL for 3rd party transfer
  --3p-url 使用url,进行第三方传送
  --3p-user 使用用户名和密码,进行第三方传送
  -4/--ipv4 使用IP4
  -6/--ipv6 使用IP6
  -#/--progress-bar 用进度条显示当前的传送状态

curl常用:

  curl http://127.0.0.1 >a.html  将网页的信息保存在linux服务器上 

  curl -m 30 --retry 3 https://proxy.mimvp.com/ip.php          curl 爬取网页,获取本机外网ip 

  curl -m 30 --retry 3 -x https://xxx.xxx.xx.xx:8888 https://proxy.mimvp.com/ip.php          curl 通过代理IP爬取网页,获取本机外网ip

    curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://xxx.com/login.php    模拟表单信息,模拟登录,保存cookie信息

  curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://blog.mydomain.com/login.php  模拟表单信息,模拟登录,保存头信息

  curl -b ./cookie_c.txt  http://blog.mydomain.com/wp-admin  使用cookie文件

 xargs 

 

  • -a file 从文件中读入作为sdtin
  • -e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
  • -p 当每次执行一个argument的时候询问一次用户。
  • -n num 后面加次数,默认会把拿来的数据以空格分割,然后进行排序 -n2表示一行排两个元素,用来控制输出
  • -t 表示先打印命令,然后再执行。
  • -i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
  • -r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
  • -s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
  • -L num 从标准输入一次读取 num 行送给 command 命令。
  • -l 同 -L。
  • -d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
  • -x exit的意思,主要是配合-s使用。。
  • -P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。

xargs本质就是把竖排数据变成横排数据:

 linux中换行一般为\n,所有的数据为了显示方便,在末尾加了\n,那一些聚集过来的数据我要进行批量处理怎么办呢,一般是管道加xargs使用,xargs会把\n去了,变成空格,然后一些rm,kill等命令本来就有群删功能,就可以批量删除了,所以会用xargs对文件批处理效果很好

 
cat url-list.txt | xargs wget -c
 假如你有一个文件包含了很多你希望下载的 URL,你能够使用 xargs下载所有链接
 
find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
 在当前目录查找所有的 jpg 文件,并且压缩它们
 
find . -type f -name "*.log" -print0 | xargs -0 rm -f
 用 rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用 xargs 去避免这个问题
 
ls *.jpg | xargs -n1 -I {} cp {} /data/images
 复制所有图片文件到 /data/images 目录下
   
 cd -    回到上一次使用过的目录
more file_name   分屏查看文件内容
head -n 10 file_name 看前面n行
tail -f  /usr/local/nginx/access.log 动态查看文件
tail -20f  /usr/local/nginx/access.log 先打印20行数据再动态查看文件
   
mkdir  
  mkdir <file> 在当前路径创建一个文件夹
  mkdir -p /usr/local/a/b/c -p 在指定目录创建文件夹,如果中间不存在会新建
 mv  
  -f  或者  --force  覆盖前不询问 
   -i   覆盖前询问 
   -n 不覆盖已存在文件 如果您指定了-i、-f、-n 中的多个,仅最后一个生效。
  -S 替换常用的备份文件后缀
  -t 将所有参数指定的源文件或目录 移动至 指定目录
  -v 详细步骤
  -u 只在源文件文件比目标文件新,或目标文件不存在时才进行移动
  mv a.txt b.txt /www/root/ mv 被移动的文件01 被移动的文件02 /移动到的地方
  mv a.txt b.txt 将a.txt文件重名成b.txt
   
stat 命令 查看文件情况命令

  [root@rainbol local]# stat nginx-1.6/
  File: ‘nginx-1.6/’
  Size: 4096 Blocks: 8 IO Block: 4096 directory
  Device: fd01h/64769d Inode: 1073028 Links: 11
  Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
  Access: 2019-08-18 20:56:09.438061943 +0800
  Modify: 2019-06-17 11:03:40.300564136 +0800
  Change: 2019-06-17 11:03:40.300564136 +0800

可以查看文件的改变时间等信息,通常是系统管理员使用,但是可以通过touch  -t '031033' nginx-1.6/ 来修改该文件时间,管理员也看不到
posted @ 2018-08-12 00:39  RainBol  阅读(381)  评论(0编辑  收藏  举报
Live2D