linux基本命令

版权声明:此文章转载自infocool

原文链接:http://www.infocool.net/kb/Linux/201607/164236.html

如需转载请联系听云College团队成员小尹 邮箱:yinhy#tingyun.com


用户和组 

1、创建用户名 比如useradd beifeng 

2、设置用户密码,比如passwd beifeng 

3、删除用户:userdel 用户名 

选项:-r 彻底删除用户信息 

4、查看用户 id+用户名 

5、退出用户:exit

设置主机名 

*暂时性设置# hostname hadoop-senior.ibeifeng.com 

*永久性设置:# vi /etc/sysconfig/network 

设置: 

NETWORKING=yes 

HOSTNAME=hadoop-senior.ibeifeng.com

主机名与IP地址的映射 

配置文件: 

Linux环境下: 

vi /etc/hosts 

192.168.187.129 hadoop-senior.ibeifeng.com hadoop-senior 

windows环境下:C:\Windows\System32\drivers\etc\hosts 

192.168.187.129 hadoop-senior.ibeifeng.com hadoop-senior 

开机启动网卡设置 

ONBOOT=yes

服务设置

BOOTPROTO=none

1、DHCP  自动获取IP

2、static固定IP         实际工作中建议static

3、none   未指定和固定IP

测试 

ping通外网需要设置DNS解析 

DNS1=192.168.189.2 

service network restart 

配置网络服务解析位置:/etc/resolv.conf 

查看网卡命令:# route -n

查看当前所在位置 

pwd 

etc存放的是系统的配置管理文件 

home存放的是用户的主目录信息 

root存放的是root用户的主目录信息 

dev存放系统设备文件 

boot存放的是系统启动加载的目录 

系统命令存放在bin和sbin中

进入到某个目录下 

#cd /boot/grub

回到主目录 

cd / 

ls

查看目录里面的内容 

ls:显示有哪些文件 

ll/ls-l显示文件的详细内容 

显示某字母开头,某个字母结尾 

#ls | grep ‘^ns.*.conf$’

模糊查找 

find .amin - 10#查找在系统中最后10分钟访问的文件 

find . -atime -2 # 查找在系统中最后48小时访问的文件 

find . -empty # 查找在系统中为空的文件或者文件夹 

find . -group cat # 查找在系统中属于 groupcat的文件 

find . -mmin -5 # 查找在系统中最后5分钟里修改过的文件 

find . -mtime -1 #查找在系统中最后24小时里修改过的文件 

find . -nouser #查找在系统中属于作废用户的文件 

find . -user fred #查找在系统中属于FRED这个用户的文件

在当前目录搜索文件内容含有某字符串(大小写敏感)的文件: 

find . -type f | xargs grep ‘your_string’

在当前目录搜索文件内容含有某字符串(大小写敏感)的特定文件: 

find . -type f -name ‘*.sh’ | xargs grep ‘your_string’

在当前目录搜索文件内容含有某字符串(忽略大小写)的特定文件: 

find . -type f -name ‘*.sh’ | xargs grep -i ‘your_string’

查找文件; 

find +目录+文件名

find 命令选项:-name 通过文件名搜索 

全盘查找:# find / -name init 

在查找的过程中尽量的缩小查找的范围 

# find /etc/sysconfig -name init 

查找包含关键字的用法 

# find / -name init 

查找以init开头的文件# find /etc/ -name init* 

通配符:*、? 

* 匹配任意字符 

?匹配单个字符 

选项:-size 

根据文件的大小来进行查询 

指定方式: 

1、+ 表示大于 

2、— 表示小于 

3、不加符号 表示等于

    选项:-user

        按照所有者查找

        # find /root -user  root

创建多层目录 

mkdir -p /uml/movie/cartoon 

删除目录: 

rm -rf +绝对路径 

删除目录和文件 

文件# rm files.txt 

目录# rm -r test/ 

[选项-r 表示删除目录;选项-f 表示强制操作] 

rm dir (空目录)

同时创建多个文件 

$ touch humanq.rmvb nezhao.mp4

复制文件并重命名 

cp test.sh test1.sh(重命名) 

cp 文件名 文件目录 

cp -r 目录名 文件目录 

[选项-r复制目录;选项-p保留原文件属性]

重命名与移动 

mv src dest 

重命名 src dest 在同一目录下 

移动 src dest 不在同一目录下或者dest是目录,src是文件

创建链接(快捷方式) 

软链接(soft link) 

#| ln−sfile/dirlinkname例如: ln -s readme.txt rm.txt 

硬链接(hard link) 

#|$ ln file/dir linkname 

区别:删除链接时是否删除原文件

查看 

cat:查看全部的内容(少) 

显示文件内容 # cat /etc/issue 

倒过来显示文件内容# tac /etc/issue 

more:分页查看文件内容(大) 

tail:末尾内容查看【参数:-(行数,默认10)f】实时查看日志信息 

查看文件末尾几行,默认不指定显示10行 

tail -6 /etc/services 

head:文件开头查看(内容的模式) 

查看文件前几行,默认不指定显示10行 

# head -5 /etc/passwd

设置普通用户的sudo权限 

root ALL=(ALL) ALL: 

1、root第一个是用户名 

2、ALL被管理主机的地址可以使ALL 或者IP 

3、(ALL)可以使用的身份,可以不写,默认root用户 

4、ALL 要操作的命令 

配置示例: 

root ALL=(ALL)root ALL 

beifeng ALL=/sbin/shutdown -r now

    使用格式:

    $ sudo shutdown -r now

编辑:#vi /etc/sudoers

在开头写入:root ALL=(ALL)    ALL

            ibeifeng ALL=(ALL)   ALL

改变权限:#chmod 440 /etc/sudoers

防火墙的管理

(1)查看防火墙的状态 sudo service iptables status

(2)关闭防火墙:sudo service iptables stop

(3)开启防火墙:sudo service iptables start

文件管理 

文件类型:文件(-)、目录(win7下的文件夹 d)、链接(win7下的快捷方式 l) 

例子: 

-rw-rw-r–. 1 ibeifeng ibeifeng 19728 Jun 5 16:57 bf-log.txt 

第一部分: 

- (文件类型) {rw- (拥有者u user)rw-(属于组 group g)r– (其他o other)}:表示此文件针对不同用户的权限 

文件权限:r(可读 4)、w(可写 2)、x(可执行 1)-(没有任何权限) 

r:读 可以查看文件 cat more tail head 

w:写 创建删除文件 mkdir touch vi 

x:执行 进入到目录文件中 cd 

第二部分: 

ibeifeng(拥有者) ibeifeng(所属组) 

针对不同用户设置权限: 

#chmod g/o/u +/- r/w/x 文件名称 

#chmod 数字 文件名称 

改变文件拥有者: 

#chown ibeifeng 文件绝对路径 

改变所属组: 

#chgrp ibeifeng 文件绝对路径 

针对目录改变(递归) 

#chown -R ibeifeng 目录路径 

同时改变(文件拥有、组): 

#chown senior:senior 文件名

vi编辑器 

vi/vim + 文件名 

在vi/vim查看模式下: 

dd:表示删除光标所在行的内容 

ZZ:保存 

x:表示光标处的字符删除 

o:表示光标的下一行插入 

w:表示保存写入 

q:退出 

!:表示强制操作 

wq!可以连用

    VI快捷方式:

        1、显示行号:set nu(在编辑模式下进行)

        2、删除单行:小写dd(在命令模式下进行)带有剪切功能

        3、连续删除多行:比如三行就是小写3dd(在命令模式下进行)

        4、黏贴:小写p(在命令模式下进行)

        5、复制:小写yy(在命令模式下进行)

        6、光标快速移动到文件末尾行,按大写G(在命令模式下进行)

        7、光标快速移动到文件第一行,按小写gg(在命令模式下进行)

        8、撤回上一步的操作,按小写u(在命令模式下进行)

        9、光标快速移动到指定的行,比如:80(在编辑模式下进行)

        10、替换,比如:1,$s/nologin/88888/g

        1:代表第一行

        $:代表最后一行

        s: 代表替换

        /:代表分割

        g: 代表通行

        1,$代表一个范围,比如:5,10或者 10,20 

查看Linux系统信息 

uname:查看系统名称 

uname -r查看系统的具体信息 

cat /proc/cpuinfo查看CPU信息 

cat /proc/meminfo 查看内存信息 

date 查看时间 【R】时区 

cal +年份,显示某年份的日历表 

设置系统时间 

#date -s 2015-09-30 14:42:45

磁盘情况 

显示已挂在分区的使用情况: sudo df -lh 

显示目录的容量大小:du -sh /home/ibeifeng 

显示磁盘详细信息:# fdisk -l 

显示挂载磁盘信息: #mount 

挂载磁盘:#mount /dev/sdb1 /data01 

卸载磁盘:#unmount /dev/sdb1 

查看系统内存的使用情况:free -M 

查看进程信息:top -M

Linux下软件的安装方式 

第一种:rpm方式 

查看某个软件是否安装: 

#rpm -qa | grep java 

卸载已经安装的软件 

#rpm -e –nodesps +软件名(多个用空格隔开) 

安装软件:#rpm -ivh xxx.rpm 

第二种方式:tar包 

zip软件: 

解压: unzipxxx.zip压缩: zip yy.zip 文件路径 

tar软件: 

tar−zxvfxxx.tar.gz(当前目录下) tar -zxvf xxx.tar.gz C dir(文件路径) 

压缩:$tar zcvf dir/file 

第三种方式:yum安装

安装jdk 

(1)给tar包执行权限 

(2)解压tar包 tar -zxvf +名称 

(3)进入jdk目录下bin 

(4)切换到root用户 

(5)配置环境变量 vi /etc/profile 

在文件最后插入 

##JAVA_HOME 

export JAVA_HOME = jdk的解压目录 

export PATH= PATH:/ JAVA_HOME/bin 

(6)source /etc/profile重新启动

shell编程 

shell程序是文本文件(批量操作Linux命令集合)该文件能够被shell解释执行,以.sh作为后缀名 

变量使用 变量类型:根据作用类型,变量可以分为本地变量和环境变量变量赋值:等号两边不能有空格,如果赋空值,可以在等号后面跟一个换行符回显变量的值:exho var 或echo var清除变量:unsetvar显示所有的用户变量:set位置参量: 0当前脚本的文件名 

#参数的个数*/ @以单个字符串显示所有的字符参量 脚本运行的当前进程编号 !最后一个后台进程号 

?0表示没有错误,非0表示错误 1,2,3…9、 10参数编号数组:数组定义初始化:arr=(mathenglishchinese)数组引用: {arr[0]} 引用 

{#arr[*]} 数组个数{arr[*]} 所有元素 

arr[0] =chemical 赋值 

for语句 

脚本判断: 

1、关于文档名的【文档类型】判断,如test -e filename表示 

-e 该文档是否存在 

-f 该文档名是否存在且为文档【file】 

-d 该【文件名】是否存在且目录(directory) 

2、关于档案的权限侦测 test -r filename 

-r -w -x 

3、关于两个整数之间的判定 

-eq -ne 

-gl -lt 

-ge -le 

4、判定字符串的数据 

test -z String:string 为0,则为true 

test -n String:string 为0,则为false 

test str1=str2/str1!=str2

语法:for i in

        do

            命令序列(集合)

        done

语法2:for((i=1;i<=10;i++));do

            sum=$(($sum+$i))

        done


while循环

    语法1:while[ 条件 ]

            do

            命令序列(集合)

            done

    语法2:while read -r line

            do

            命令序列(集合)

            done

    read 表示从标准输入读取一行,并把输入的每个字段的指定给shell变量

    选项:-r 代表允许使用特殊的字符包括反斜杠\


    line:表示变量名

    案例:

    #!/bin/bash

    i=1

    SUM=0

    while [ $i -le 10 ]

    do

    SUM=$((SUM+i))

    i=$[i+1]

    done

    echo $SUM


    echo "-------------------------------------"


    while read -r s

    do

        echo $s:Hello每一行的末尾每一行显示指定的字符用:隔开(原文件没有被修改)

    done < /etc/passwd##通过小于符号将查看内容的文件传输给while命令,然后while要结合read命令


awk命令:

    语法:awk '条件1 {动作1} 条件2 {动作2} 条件3 {动作3}...' 文件名

    作用:可以格式化输出一些内容,printf

          还可以输入控制流语句

    管道符号同样支持AWK命令

        $ awk '{printf $1 "\t" $5 "\n"}' gerry.txt

        # df -h | awk '{print $1 "\t" $5}'

        选项:-F指定分隔符

    printf与print的区别:

        前者需要手动添加“\n”,后者不需要,自动添加

需求:

    格式:用户名+HELLO,拿passwd文件来举例

    反引号:代表预先执行

if语句

    语法1:判断2是否等于2

    #!/bin/bash


    if [ 2 -eq 2 ]

    then

    echo YES

    fi


    如果不相等,则没有输出结果


    if后必须空格,否则报错

    if [ 3 -eq 2 ]

语法2:

    判断tmp下有没有123目录,没有则创建

    #!/bin/bash


    if [ -d /tmp/123 ];then

        ls /tmp/123

    else

        mkdir /tmp/123

    fi


    \反斜杠代表可以换行继续输入命令

case语句:

    系统管理命令用户提示手册


    #!/bin/bash


    case $1 in

    top)

        top

        ;;

    free)

        free

        ;;

    df)

        df

        ;;

    *)

        echo "usgae:$0{top|free|df}"

    esac

需求:用户输入一个字符,判断是否为字母、数字或者其他字符

        并输入相应的提示信息

        a-z A-Z 0-9

    read -p "pree some key.then prees return :" KEY

    case $KEY in

    [a-z][A-Z])

    echo "it is a letter"

    ;;

    [0-9])

    echo "it is a digit"

    ;;

    *)

    echo "it is hkjhkjbmn,k"

    esac

Crontab计划任务

1、at --指定时间执行特定任务

    用法;at +时间

    at 1:23

    at> cp /etc/passwd /tmpz 执行任务

    先将系统时间调准确

        date -s +“时间”

    在某个时间点某一个时刻,想让系统完成一件事,就可以用at命令执行

2、周期性任务

    crontab ---周期性执行任务

    用法:crontab [-u 用户][-l][]

    前提:开启服务器$ service crond status/start/stop

    查看系统的服务,是否开机启动#/$chkconfig -list

    NetworkManager  0:off   1:off   2:on    3:on    4:on    5:on    6:off

    数字代表启动级别

    以/etc/passwd为例:每周三的凌晨2点备份passwd文件

    第1列 第2列 第3列 第4列 第5列 

    分       时       日       月       周       cmd

    *       *       *       *       *       cmd标题

    0       2       *       *       3       cp /etc/passwd /tmp执行任务

    5       1       10,25   *       *       rm -rf /tmp/*每个月10号和25号凌晨1点5分执行删除命令

    */10    *       *       *       *       ntpdate 时间服务器,每10分钟执行一次

    0       1-6     *       *       *       mkdir 每天1-6点执行

    进入设置状态:#crontab -e

    编辑命令:*/1 * * * * date >> /tmp/date.log

    重启服务:$ service crond restart

    查看信息:$ tail -f /home/ibeifeng/bf-log.txt

特殊符号 

1、管道符号 

用竖线表示:| 

意思:将前面一个命令的输出结果传递给后面的命令处理 

示例:# cat /etc/passwd | more 

grep:表示过滤筛选的意思 

结合管道符号一起使用,筛选过滤关键字 

# cat /etc/passwd | grep ‘root’ 

# cat /etc/passwd | head -3 

2、追加符号 

用>>符号表示,注意要用英文输入法输入 

注意,如果系统中追加文件不存在,则会自动创建 

# ifconfig | grep ’ inet6 addr:’ >> /eth0.log 

# head -3 /etc/passwd >> tmp.pass 

3、覆盖符号 

用>符号表示 

# ifconfig | grep ’ inet6 addr:’ > /eth0.log 

4、 wc命令 

统计,可以统计字符数,单词数,行数 

选项:-l行数,line 

示例:# wc -l /etc/passwd 

结合管道符号 wc连用: 

示例:# head -3 /etc/passwd | wc -l 

# ps -ef查看系统进程 

# ps -ef | wc -l 

5、man命令 

按空格翻页查看 

按:/选项 查找想要查看的指定信息 

按小写n继续查找 

按小写q退出浏览

磁盘分区与挂载 

# fdisk -l 查看系统所有设备的信息(硬盘)

    /dev/sda其中的sda表示系统中第一块硬盘

    sda1代表这块硬盘中的第一个分区。。以此类推


Linux中通过文件来管理磁盘

    brw-rw----.  其中b代表块,block的意思 ,块的设备文件

    drw-rw----.  其中d代表目录,data的意思

        都是一个占位符

cylinders:磁柱

起始磁柱start和结束磁柱end的概念

硬盘是有接口的:

    sata、sas一般用于服务器接口比较多

    scsi、idea  个人机器

磁盘分区步骤:

    1、# fdisk /dev/sdb

    2、 n   add a new partition  按n

        e   extended   :扩展分区

        p   primary partition (1-4)  :主分区

    一般企业中使用2+1或者3+1模式分区

    2+1表示:2个主分区+1个扩展分区   一般会保留一个扩展分区

扩展分区不能直接拿来使用,必须再进行一个逻辑分区

# mkfs.ext4 /dev/sdb6


    mkfs代表格式化命令

    ext4代表Linux文件系统

挂载磁盘: 

# mount /dev/sdb6 /mnt 

挂载点目录必须存在,否则挂载失败 

访问磁盘使用过挂载点,也就是它的唯一路口

mount命令,代表挂载磁盘,但是是临时生效

永久挂载需要写入配置文件:

路径:/etc/fstab 严格按照格式填写

1.png

想阅读更多技术文章,请访问听云技术博客,访问听云官方网站感受更多应用性能优化魔力。

关于作者

郝淼emily

重新开始,从心开始

我要评论

评论请先登录,或注册