Linux命令集合

Hadoop集群的高频命令

  • 查看共享文件在linux下的哪个地方
    cd /mnt/hgfs/
  • 在Linux下解压压缩包
    tar xvzf
  • 启动hadoop集群
    ./start-all.sh 先进入cd /usr/local/src目录再启动hadoop
  • 从hdfs上把文件down下来
    ./hadoop fs -get /1.data /usr/local/src/ 后面路径是文件down下来的存放地址
  • 从hdfs上查看已经在的文件命令
    ./hadoop fs ls
  • 查看集群运行好的文件输出
    ./hadoop fs -text /output/part-00001
  • 本地模拟测试文件命令
    cat 文件名 | python map.py | sort -k 1 | python reduce.py > outputFile
  • 跑代码
    bash run.sh
  • hdfs上传文件
    ./hadoop fs -put
  • 删除hdfs目录
    ./hadoop fs -rmr
  • 杀掉hadoop集群运行中的环境
    hadoop job -kill job 201710171458_0005
  • 加入压缩包命令
    tar cvzf w.tar.gz white_list_1 white_list_2
  • 命令行全局排序
    sort -k 1 -n按照第一列的数字格式进行正序排序
    sort -k 1 -rn按照逆序排序

常用命令

  • | 管道
    cat hello.txt | python map.py将hello.txt传入到map.py文件执行
  • awk 根据条件执行
    awk '$1>10{print $1}'如果第一列大于10,就输出第一列的值
  • sz:从服务器下载文件到本地
  • rz:上传文件到服务器
  • 2>&1解释:
    0 是一个文件描述符,表示标准输入(stdin)
    1 是一个文件描述符,表示标准输出(stdout)
    2 是一个文件描述符,表示标准错误(stderr)
    例子:0>file.in 1>file.out 2>file.err
    将错误的输出内容输入到正确的输出文件中 2>&1
  • &是一个描述符,如果1或2前不加&,会被当成一个普通文件。
    1>&2 意思是把标准输出重定向到标准错误.
    2>&1 意思是把标准错误输出重定向到标准输出。
    &>filename 意思是把标准输出和标准错误输出都重定向到文件filename中
  • [ -z STRING ] “STRING” 的长度为零则为真。
  • | 管道
  • && 左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行
  • || 与&&相反。如果||左边的命令(command1)未执行成功,那么就执行||右边的命令(command2)
  • () 运算符:
    执行的效果等同于多个独立的命令单独执行的效果。() 表示在当前 shell 中将多个命令作为一个整体执行。需要注意的是,使用 () 括起来的命令在执行前面都不会切换当前工作目录,也就是说命令组合都是在当前工作目录下被执行的,尽管命令中有切换目录的命令。
  • ??{} 运算符:
    如果使用{}来代替(),那么相应的命令将在子shell而不是当前shell中作为一个整体被执行,只有在{}中所有命令的输出作为一个整体被重定向时,其中的命令才被放到子shell中执行,否则在当前shell执行。
    注意:在使用{}时,{}与命令之间必须使用一个空格
  • ??子线程和父线程有什么区别
  • ./a.sh,sh ./a.sh和sh a.sh是一样的, 实际上是启了一个子shell来执行a.sh
  • source ./a.sh ,source a.sh 和. ./a.sh是一样的, 都是在当前shell中执行脚本

下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:

运算符 说明 举例
-eq 检测两个数是否相等,相等返回 true。 [ $a -eq $b ] 返回 false。
-ne 检测两个数是否不相等,不相等返回 true。 [ $a -ne $b ] 返回 true。
-gt 检测左边的数是否大于右边的,如果是,则返回 true。 [ $a -gt $b ] 返回 false。
-lt 检测左边的数是否小于右边的,如果是,则返回 true。 [ $a -lt $b ] 返回 true。
-ge 检测左边的数是否大于等于右边的,如果是,则返回 true。 [ $a -ge $b ] 返回 false。
-le 检测左边的数是否小于等于右边的,如果是,则返回 true。 [ $a -le $b ] 返回 true。
  • test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
    数值测试 test 1 lt 2
    字符串测试
    参数 说明
    = 等于则为真
    != 不相等则为真
    -z 字符串 字符串的长度为零则为真
    -n 字符串 字符串的长度不为零则为真
    文件测试
    -e 文件名 如果文件存在则为真
    -r 文件名 如果文件存在且可读则为真
    -w 文件名 如果文件存在且可写则为真
    -x 文件名 如果文件存在且可执行则为真
    -s 文件名 如果文件存在且至少有一个字符则为真
    -d 文件名 如果文件存在且为目录则为真
    -f 文件名 如果文件存在且为普通文件则为真
    -c 文件名 如果文件存在且为字符型特殊文件则为真
    -b 文件名 如果文件存在且为块特殊文件则为真
  • cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
    参数:
    -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
    -c :以字符为单位进行分割。
    -d :自定义分隔符,默认为制表符。
    -f :与-d一起使用,指定显示哪个区域。
    -n :取消分割多字节字符。仅和 -b 标志一起使用。
    -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除
  • $0: 脚本本身文件名称
    $1: 命令行第一个参数,$2为第二个,以此类推
    $*: 所有参数列表
    $@: 所有参数列表
    $#: 参数个数
    $$: 脚本运行时的PID
    $?: 脚本退出码
  • ∗与@的区别
    当命令行为test.sh 1 2 3
    ∗ " 表 示 " 123 " " *"表示"1 2 3" " ""123""@“表示"1” “2” “3”
    二者没有被引号括起来时是一样的都为"1 2 3”,只有当被引号括起来后才表现出差异
  • sed 可以利用脚本来处理文本文件**太过复杂
  • rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
    rsync功能
    作为命令,实现本地-远程文件同步
    作为服务,实现本地-远程文件同步
    rsync特点
    可以镜像保存整个目录树和文件系统
    可以保留原有的权限(permission,mode),owner,group,时间(修改时间,modify time),软硬链接,文件acl,文件属性(attributes)信息等
    传输效率高,使用同步算法,只比较变化的
    支持匿名传输,方便网站镜像;也可以做验证,加强安全
    rsync同类服务
    sync 同步:刷新文件系统缓存,强制将修改过的数据块写入磁盘,并且更新超级块。
    async 异步:将数据先放到缓冲区,再周期性(一般是30s)的去同步到磁盘。
    rsync 远程同步:remote synchronous
  • expr 命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串。
  • flock文件锁命令
    在linux中,提供了flock文件锁命令,具体格式如下:
    flock [-sxon] [-w timeout] lockfile [-c]command…
    flock [-sxun] [-w timeout] fd
    参数说明如下:
    -s为共享锁,在定向为某文件的FD上设置共享锁而未释放锁的时间内,其他进程试图在定向为此文件的FD上设置独占锁的请求失败,而其他进程试图在定向为此文件的FD上设置共享锁的请求会成功。
    -e为独占或排他锁,在定向为某文件的FD上设置独占锁而未释放锁的时间内,其他进程试图在定向为此文件的FD上设置共享锁或独占锁都会失败。只要未设置-s参数,此参数默认被设置。
    -u手动解锁,一般情况不必须,当FD关闭时,系统会自动解锁,此参数用于脚本命令一部分需要异步执行,一部分可以同步执行的情况。
    -n为非阻塞模式,当试图设置锁失败,采用非阻塞模式,直接返回1,并继续执行下面语句。
    -w设置阻塞超时,当超过设置的秒数,就跳出阻塞,返回1,并继续执行下面语句。
    -o必须是使用第一种格式时才可用,表示当执行command前关闭设置锁的FD,以使command的子进程不保持锁。
    -c执行其后的comand。
  • lsof(list open files)是一个列出当前系统打开文件的工具,即文件被占用的那些程序信息。可以用于判断文件是否编辑或传输完成。
  • seq指令常用来生成连续的数字或与连续数字相关的字符串,效率相当快。
  • curl是一个利用URL语法在命令行下工作的文件传输工具
    请求 curl www.baidu.com
    get发送curl “www.hotmail. com/when/junk.cgi?birthyear=1905&press=OK”
    post发送curl -d “birthyear=1905&press=OK” www.hotmail. com/when/junk.cgi
  • eval 执行命令拼接好的字符串指令
  • sshpass 非交互式ssh密码验证,常用于shell文件中(ssh登陆不能在命令行中指定密码)
  • 建立软链接和硬链接的语法
    软链接:ln -s 源文件 目标文件
    硬链接:ln 源文件 目标文件
    源文件:即你要对谁建立链接
    软连接相当于快捷图标。硬链接会重新拷贝一份文件,并实时和源文件同步更新。
    使用相对路径创建的链接,在移动过后就失效;使用绝对路径,就可以移动文件或文件夹
  • #!/usr/bin/env python
    当在头文件加上这些东西,就可以不用python命令执行,而是直接像linux一样直接执行
  • ulimit 主要是用来限制进程对资源的使用情况的,它支持各种类型的限制
    选项 含义
    -a 显示当前系统所有的limit资源信息。
    -H 设置硬资源限制,一旦设置不能增加。
    -S 设置软资源限制,设置后可以增加,但是不能超过硬资源设置。
    -c 最大的core文件的大小,以 blocks 为单位。
    -f 进程可以创建文件的最大值,以blocks 为单位.
    -d 进程最大的数据段的大小,以Kbytes 为单位。
    -m 最大内存大小,以Kbytes为单位。
    -n 查看进程可以打开的最大文件描述符的数量。
    -s 线程栈大小,以Kbytes为单位。
    -p 管道缓冲区的大小,以Kbytes 为单位。
    -u 用户最大可用的进程数。
    -v 进程最大可用的虚拟内存,以Kbytes 为单位。
    -t 最大CPU占用时间,以秒为单位。
    -l 最大可加锁内存大小,以Kbytes 为单位。

你可能感兴趣的:(Linux)