Skip to the content.

2016/12/07

Linux基础命令

1. nc: NetCat

$ yum install -y nmap-ncat
功能:
参数:
user cases:
ref:http://www.linuxso.com/command/nc.html

2. Screen

    1. screen -r screen-name
    2. screen -r -D screen-name //强制进入已经attached 的screen
    3. ctrl + a c  //create a window
    4. ctrl+a "  //show all the window list
    5. ctrl+a [  // copy mode
    
    

3. vim

删除列
    1.光标定位到要操作的地方。
    2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行。
    3.d 删除。
插入列
    插入操作的话知识稍有区别。例如我们在每一行前都插入"() ":
    1.光标定位到要操作的地方。
    2.CTRL+v 进入“可视 块”模式,选取这一列操作多少行。
    3.SHIFT+i(I) 输入要插入的内容。
    4.ESC 按两次,会在每行的选定的区域出现插入的内容。
    apt-get install package_name 
    apt-get install package_name --reinstall
    apt-get install -t/ --target-release 
    apt-get purge package_name //uninstall 
    apt-get update && apt-get upgrade && apt-get autoclean
    apt-cache search package_name 
    apt-cache 
    apt-cache showpkg pakcage_name // show the version
    apt-cache madison <package_name>
    apt-cache show <package_name> | grep Version
    apt-cache policy <package_name>
    aptitude install package_name=version_name
yum —-showduplicates list gringotts
yum info //查看package信息
rpm -ivh
rpm -e  --nodeps
rpm -qa |grep 
rpm -qf //查看文件是由哪个包装出来的
rpm -e <package_name> --no-scripte

6. 创建ls文件

ln -s /usr/share/neutron/api-paste.ini /etc/neutron/api-paste.ini

7. 系统相关

cat /proc/version 查看os类型
lsb_release -ra
uname -a
修改时间时区
  $ mv /etc/localtime /etc/localtime.bak
  $ ln -s /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

显示目录和文件的命令

   Ls:用于查看所有文件夹的命令。
   Dir:用于显示指定文件夹和目录的命令
   Tree: 以树状图列出目录内容
   Du:显示目录或文件大小
   du -sh * | sort -nr // 显示文件大小,并排序

修改目录,文件权限和属主及数组命令

   Chmod:用于改变指定文件的权限命令。
   Chown:用于改变文件拥有属性的命令。
   Chgrp:用于改变文件群组的命令。
   Chattr:用于设置文件具有不可删除和修改权限。
   Lsattr:用于显示文件或目录的隐藏属性。

创建和删除目录的命令

   Mkdir:用于创建目录
   Rmdir:用于删除空的目录
   Rm -f:用于删除不为空的目录

创建和删除,重命名,复制文件的命令

  Touch:创建一个新的文件
   Vi:创建一个新的文件
   Rm:删除文件或目录
   Mv:重命名或移动文件的命令
   Cp:复制命令

显示文件内容的命令

   Cat:用于显示指定文件的全部内容
   More:用分页的形式显示指定文件的内容
   Less:用分页的形式显示指定文件的内容,区别是more和less翻页使用的操作键不同。
   Head:用于显示文件的前n行内容。
   Tail:用于显示文件的后n行内容。
   Tail -f:用于自动刷新的显示文件后n行数据内容。

查找命令

   Find:查找指定的文件。
   Whereis:查找指定的文件源和二进制文件和手册等
   Which:用于查询命令或别名的位置。
   Locate:快速查找系统数据库中指定的内容。
   Grep:查找文件里符合条件的字符串。

关机和重启计算机的命令

   Shutdown:-r 关机后立即重启
             -k 并不真正的关机,而只是发出警告信息给所有用户
             -h 关机后不重新启动
   Poweroff:用于关机和关闭电源
   Init:改变系统运行级别
        0级用于关闭系统
        1 级用于单一使用者模式
        2级用来进行多用户使用模式(但不带网络功能)
        3级用来进行多用户使用模式(带网络全功能)
        4级用来进行用户自定义使用模式
        5级表示进入x  windows时的模式
        6级用来重启系统
   Reboot: 用于计算机重启
   Halt:用于关闭计算机系统

压缩和打包命令

   Tar:用于多个文件或目录进行打包,但不压缩,同时也用命令进行解包
   Gzip:用于文件进行压缩和解压缩命令,文件扩展名为.gz结尾。
   Gunzip:用于对gzip压缩文档进行解压缩。
   Bzip2:用于对文件或目录进行压缩和解压缩
   Bzcat:用于显示压缩文件的内容。
   Compress/un compress: 压缩/解压缩.Z文件
   Zcat:查看z或gz结尾的压缩文件内容。
   Gzexe:压缩可执行的文件
   Unarg:解压缩.arj文件
   Zip/unzip:压缩解压缩.zip文件

用户操作命令

   Su:切换用户命令
   Sudo:一系统管理员的身份执行命令
   Passwd:用于修改用户的密码

文件连接命令

   Ln:为源文件创建一个连接,并不将源文件复制一份,即占用的空间很小。
        可以分为软件连接和硬链接。
        软连接:也称为符号连接,即为文件或目录创建一个快捷方式。

硬链接:给一个文件取多于一个名字,放在不同目录中,方便用户使用。
Ln命令参数如下:

   -f:在创建连接时,先将与目的对象同名的文件或目录删除。
   -d:允许系统管理者硬链接自己的目录。
   -i:在删除与目的对象同名文件或目录时先询问用户。
   -n:在创建软连接时,将目的对象视为一般的文件。
   -s:创建软连接,即符号连接。
   -v:在连接之前显示文件或目录名。
   -b:将在连接时会被覆盖或删除的文件进行备份。

帮助命令—–man

其他命令

   Who:显示系统中有那些用户在使用。
        -ami  显示当前用户
        -u:显示使用者的动作/工作
        -s:使用简短的格式来显示
        -v:显示程序版本
   Free:查看当前系统的内存使用情况
   Uptime:显示系统运行了多长时间
   Ps:显示瞬间进程的动态
   Top: 动态地显示进程
   Pstree:以树状方式显示系统中所有的进程
   Date:显示或设定系统的日期与时间。
   Last:显示每月登陆系统的用户信息
   Kill: 杀死一些特定的进程
   Logout:退出系统
   Useradd/userdel:添加用户/删除用户
   Clear:清屏
   Passwd:设置用户密码

vim编辑器

   首先用vi命令打开一个文件
末行模式命令:
   :n,m w path/filename 保存指定范围文档( n表开始行,m表结束行)
   :q!    对文件做过修改后,强制退出
   :q     没有对文件做过修改退出
   Wq或x  保存退出
   dd   删除光标所在行
   : set number 显示行号
   :n 跳转到n行
   :s  替换字符串 :s/test/test2/g  /g全局替换 /也可以用%代替
   / 查找字符串

网络通信常用的命令

   Arp:网络地址显示及控制
   ftp:文件传输
   Lftp:文件传输
   Mail:发送/接收电子邮件
   Mesg:允许或拒绝其他用户向自己所用的终端发送信息
   Mutt E-mail 管理程序
   Ncftp :文件传输
   Netstat:显示网络连接.路由表和网络接口信息
   Pine:收发电子邮件,浏览新闻组
   Ping:用于查看网络是否连接通畅
   Ssh:安全模式下远程登陆
   Telnet:远程登录
   Talk:与另一用户对话
   Traceroute:显示到达某一主机所经由的路径及所使用的时间。
   Wget:从网路上自动下载文件
   Write:向其它用户终端写信息    Rlogin:远程登录

others

 cat 读取文本内容
  -n: 显示行号
  -b: 显示行号且忽略空行
  cat -n 1.txt

wc: 计数
  -l: 行数
  -w: 字数
  -c: 字符数
  wc -l file1 file2 ......可以统计多个文件

cp 拷贝文件 目录
  -i: 交互模式,如果目标文件存在,则询问是否覆盖
  -r: 拷贝目录
  cp file1 file2 file3.... dir 表示将file1,file2...拷贝到dir
  cp -r dir1 dir2 dir3... dirn 将dir1, dir2,dir3...拷贝到dirn

file 察看文件类型
  file test.sh

mv 移动文件,更改文件名
  -i: 交互模式,如果目标文件存在,则询问是否覆盖
  -r: 移动目录,跟改目录名

rm 删除文件
  -i: 交互模式,询问是否删除
  rm -r dir1 dir2 dir3...可删除多个

mkdir 创建目录
  -p: parent,父目录不存在,则创建父目录

  mkdir -p test/test

rmdir 删除目录
  等同与rm -r
  rmdir dir1 dir2 dir3 ....
  rm -r dir1 dir2 dir3 ....

chmod 更改权限
  chmod -R 777 DIR改变目录下所有文件权限为777,必须是-R

 权限 -rwxrwxrwx
         421421421
  最前面的-表示文件类型为普通文件
  接下来三位表示所有者权限
  接下来三位表示组权限
  最后三位表示其它用户权限
  如果某一权限没有被分配,用-表示。-rwxr--rwx表示组没有写和执行权限
  文件加夜有可执行权限,但表示是否容许在该目录下寻找文件

chown 改变所有者
chgrp 改变组
command &
  命令后面加&表示在后台运行
  find . -name "*.sh"&

fg 把后台进程放到前台
  fg %1 把后台第一个作业放到前台

bg
  把前台进程放到后台

jobs
  显示后台或挂起的进程

ps
  显示所有进程
  ps -f 显示完全信息,包括占用cpu时间,开始时间。。。

kill
  -9 强制结束
   
more 显示文本内容,每次一屏,按空格继续
  find / -name "*.sh" | more

tail 从指定的位置开始显示后面得内容
  tail -f server.log 用于在server上边运行边察看日志
  tail -10 dos2unix.sh 察看最后10行

head
  与tail对应

sort 排序
  -r 逆序
  -d 字典顺序
  ls | sort -r

tr  字符替换
  -d 删除指定字符  ls | tr -d 'log'
  ls | tr 'd' 'g'把d变成g

at time date job
  定时调度

compress
  -f 压缩文件
  -v 显示压缩比例
  compress -vf project.tar 将产生project.tar.Z且project.tar被删除

uncompress
  -f 解压缩文件
  -v 显示压缩比例
  uncompress project.tar.Z 将产生project.tar且project.tar.Z被删除
  
tar
  -c 创建新文档
  -x 解包
  -v 显示正在处理的文件名
  -f 取代默认的文件名
  tar -cvf project.tar project/* 把project目录下所有文件打包
  tar -xvf project.tar

crontab
  使用权限 : 所有使用者 
  使用方式 :
  crontab [ -u user ] file
  crontab [ -u user ] { -l | -r | -e } 
  crontab   指定使用者在固定时间执行程序,换句话说,即使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你
必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

后台运行程序

option1:

# nohup <linux_command> 2>&1 > <log-file> &

for example:

# nohup transformer-api --config-file /etc/transformer/transformer.conf 2>&1 > transformer-1.log &

option2:

# <linux command> &

调出到前台执行时:
# fg

ctrl + c  终止执行

pip

pip install <pkg_name> --allow-unverified <pkg_name>

selinux

# getenforce
# setenforce 0

永久性修改: vim /etc/sysconfig/selinux 修改 SELINUX=disable

vim 删除空行::g/^\s*$/d

vim 删除以 # 开头的行: :g/^#/d

other commands

# lsblk
# ifconfig br-ex 172.24.4.1/24 up

%s/vivian/sky/g

   :s/vivian/sky/ 替换当前行第一个 vivian 为 sky 
  
  :s/vivian/sky/g 替换当前行所有 vivian 为 sky 
  
  :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky 
  
  :n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky 
  
  n 为数字,若 n 为 .,表示从当前行开始到最后一行 
  
  :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky 
  :%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky %s/vivian/sky/g :  

iptables

1. vim /etc/sysconfig/iptables
2. 复制一行已经开放端口的配置. 例如:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
3. 粘贴,修改成80.
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
4. 重启iptables
    /etc/init.d/iptables restart
   or 
   service iptables restart

dd

dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

except

spawn

nslookup

nslookup baidu.com 此命令是监测网络中DNS服务是否能正确实现域名解析的命令行工具.

sed

NAME
 sed - stream editor for filtering and transforming text
DESCRIPTION
       Sed  is  a stream editor.  A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline).  While in some ways similar
       to an editor which permits scripted edits (such as ed), sed works by making only one pass over the input(s), and is consequently more efficient.  But it is sed’s  ability
       to filter text in a pipeline which particularly distinguishes it from other types of editors.
SYNOPSIS

du

1. #du -sh *
identify the big files.
#du -sh * | sort -nr

修改网卡编号

   第一步:
      先修改/etc/udev/rules.d/70-persistent-net.rules,将eth1改为eth0  或者直接将此文件删掉,然后reboot会自动生成。
   第二步:
     修改/etc/sysconfig/network-scripts/ifcfg-eth0中的mac修改为上面的mac相同就可以了。
   第三步:
    reboot

修改时间、日期、时区

  1) 修改时间
     date -s 14:00:00
  2) 修改日期
     date -s 2014/04/20
  3) 修改时区
     rm -rf /etc/localtime
     ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
   4) date -s 设置系统时间
       hwclock hwclock --show 查看硬件时间
    
//以系统时间为基准,修改硬件时间
[root@localhost ~]# hwclock --systohc<== sys(系统时间)to(写到)hc(Hard Clock)
[root@localhost ~]# hwclock -w
//以硬件时间为基准,修改系统时间
[root@localhost ~]# hwclock --hctosys
[root@localhost ~]# hwclock -s 
ntpdate 10.6.1.179 
[root@xiaoliChefServer ~]# service ntpd start
Starting ntpd: [  OK  ]

5. NFS configuration

server:
step1:   /var/lib/nova/instances *(rw,sync,fsid=0,no_root_squash) add into  /etc/exports
step2:  chmod 777 /var/lib/nova/instances/
step3: service nfs restart
client:
step1:  10.1.3.206:/ /var/lib/nova/instances/ nfs4 defaults 0 0 add into /etc/fstab
step2:  mount -av
            df -k

6. rm文件恢复

step1:  df -h
查看删除文件所在目录属于哪个分区
step2: debugfs
step3: open 分区
step4: ls -d /home/
step5: logdump -i <>
block (0+1)
step6: dd if=... of=.. count=1 bs=4096 skipid=

2. 文件管理命令

    文件解压缩:  
    总结
1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压

3. 进程管理命令

    pgrep service_name //查看service 的pid
    ps -ef | grep -i 5272  //查看某个进程的信息
    netstat -anp | grep -i 8776 //查看某个端口号的信息
    netstat -anp | grep -i cinder
    service --status-all|grep openstack|grep dead

增加磁盘

    在增加磁盘之后(磁盘编号从sda,到sdb),需要增加分区并且格式化:
    fdisk /dev/sdb and then choose n 
    mkfs.ext2 /dev/sdb1   :格式化
    然后mount到/tmp目录下:
    mount /dev/sdb1 /tmp
    chmod  1777 /tmp
    result:[root@xiaoliChefServer /]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   35G   25G  8.5G  75% /
tmpfs                          16G     0   16G   0% /dev/shm
/dev/sda1                     485M   39M  421M   9% /boot
/dev/sdb1                      35G   48M   33G   1% /tmp

2. 快捷键

Ctrl + u 删除光标之前到行首的字符

Ctrl + k 删除光标之前到行尾的字符

jq

jq命令允许直接在命令行下对JSON进行操作,包括分片、过滤、转换等

日志文件/var/log/messages

查看服务性能情况

常用命令

free -h
df -h
top
lsblk

文本处理

sed
awk
grep
tail
head

diff & patch

1. diff -urN <original.py> <new.py>
生成的是统一格式的diff文件。

2.patch 打补丁
yum install patch -y
安装补丁:patch -p1 < *.patch
卸载补丁:patch -p1 -R < *.patch
注意:cd 到的目录 + path文件头的目录(剥离层级) = 要打patch的文件