Linux useful commands gallery | Linux常用命令集锦

Linux系统

查看当前linux的版本

$ uname -a
Linux yfddt6Z 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[user@yfddt6Z logs]$ uname -r
3.10.0-327.el7.x86_64

Linux系统平均负载

http://www.veryhuo.com/a/view/51838.html

多核CPU的话,满负荷状态的数字为 "1.00 * CPU核数",即双核CPU为2.00,四核CPU为4.00。

单核负载在0.7以下是安全的,超过0.7就需要进行优化了。

使用以下命令可以直接获得CPU核心数目: grep 'model name' /proc/cpuinfo | wc –l

$ grep 'model name' /proc/cpuinfo | wc -l

 

查看CPU情况
 $ more /proc/cpuinfo | grep "model name"
  model name    : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz
  model name    : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz
  model name    : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz
  model name    : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz
  model name    : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz
  model name    : Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq

# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l

 查看CPU位数(32 or 64)

  #getconf LONG_BIT

查看内存

    grep MemTotal /proc/meminfo

CentOS自动同步服务器时间
1.安装ntpdate
yum install ntpdate -y
2.测试是否正常
ntpdate cn.ntp.org.cn
正常输出:18 Jun 10:59:34 ntpdate[1619]: step time server 58.220.133.132 offset 86.569557 sec
3.设置定时任务每天自动同步(root 用户)
crontab -e
59 23 * * * ntpdate cn.ntp.org.cn

 

Linux基础

linux输出错误重定向
0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;

如 果想要正常输出和错误信息都不显示,则要把标准输出和标准错误都重定向到/dev/null, 例如:

# ls 1>/dev/null 2>/dev/null

还有一种做法是将错误重定向到标准输出,然后再重定向到 /dev/null,例如:

# ls >/dev/null 2>&1

http://hi.baidu.com/hovlj_1130/blog/item/619e36d4c46706cf51da4be4.html
 
同时打印输出到文件和Console
  Console 1: $ ls 2>&1 > /tmp/ls.txt
  Console 2: $ tail -f /tmp/ls.txt
or
  ls 2>&1 | tee -a /tmp/ls.txt (to append the output and not overriding, it is possible to use "-a" or "--append")
Tee http://linux.101hacks.com/unix/tee-command-examples/
Tee command is used to store and view (both at the same time) the output of any other command.
 
Check the exit code of last command 
$ echo $? 
 
VI
全局替换
:%s/dev_v15/sjo_v15/g
 
查看重启的日志
/var/log/dmesg
或者命令
dmesg
也有重启过程中的日志 只是当前启动过程中的日志
message会有重启之前的历史记录

 

用户和权限

变更用户身份 su

以其他身份来执行指令 sudo

添加用户、权限

# useradd -d /home/admin -m admin

此命令创建了一个用户admin,其中-d和-m选项用来为登录名admin产生一个主目录/home/admin(/home为默认的用户主目录所在的父目录)。

 

假设当前用户是admin,则下面的命令修改该用户自己的口令:

# passwd

Old password:******

New password:*******

Re-enter new password:*******

 

如果是超级用户,可以用下列形式指定任何用户的口令:

# passwd sam

New password:*******

Re-enter new password:*******

 

设置root不能直接ssh登录的方法

先增加一个普通权限的用户

#vi /etc/ssh/sshd_config

PermitRootLogin yes改为PermitRootLogin no,重启sshd服务

#service sshd restart

用普通用户登录,然后用 su root 切换到root用户拿到最高权限

 

磁盘管理

添加新硬盘

查看磁盘情况

# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/vda1 20G 17G 2.7G 86% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
# df -T
文件系统 类型 1K-块 已用 可用 已用% 挂载点
/dev/vda1 ext4 20641404 16798748 2794132 86% /
tmpfs tmpfs 4030788 0 4030788 0% /dev/shm
# fdisk -l
Disk /dev/vda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00073f45

Device Boot Start End Blocks Id System
/dev/vda1 * 1 2611 20970496 83 Linux

Disk /dev/vdb: 859.0 GB, 858993459200 bytes
16 heads, 63 sectors/track, 1664406 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x48d0934f

Device Boot Start End Blocks Id System

用fdisk对这块硬盘分区

# fdisk /dev/vdb
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

Command (m for help): n
这里是问你是要建立主分区还是扩展分区,这里是第一次建立选择主分区p.
硬盘分区有三种,主磁盘分区、扩展磁盘分区、逻辑分区。
一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个。且主分区+扩展分区总共不能超过4个。逻辑分区可以有若干个。
Command action
l logical (5 or over)
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1664406, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1664406, default 1664406):
Using default value 1664406

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

格式化硬盘

# mkfs.ext4 /dev/vdb1

挂载硬盘

# mount /dev/vdb1 /mnt

设置系统自动挂载硬盘

如果想每次系统重启都能自动挂载该分区可修改/etc/fstab文件,在最后加一段 /dev/sdb1    /www    ext3    defaults 1 2

格式说明:/dev/sdb1 代表哪个分区  ext3是该分区的格式 defaults 是挂载时所要设定的参数(只读,读写,启用quota等),输入defaults包括的参数有(rw、dev、exec、auto、nouser、 async) ,1是使用dump是否要记录,0是不要。 2是开机时检查的顺序,是boot系统文件就为1,其他文件系统都为2,如不要检查就为0)

# vim /etc/fstab
/dev/vdb1 /mnt ext4 defaults 0 0
# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/vda1 20G 17G 2.7G 86% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
/dev/vdb1 788G 197M 748G 1% /mnt 

查看磁盘使用情况

[root@iZ25oteqcceZ /]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/xvda1             20G   19G     0 100% /

tmpfs                 3.9G  228K  3.9G   1% /dev/shm

/dev/xvdb1             99G  9.2G   85G  10% /mnt

 

Filesystem            Size  Used Avail Use% Mounted on

/dev/xvda1             20G   13G  6.3G  67% /

tmpfs                 3.9G  228K  3.9G   1% /dev/shm

/dev/xvdb1             99G   13G   82G  14% /mnt

 

查看文件夹大小

[root@iZ25oteqcceZ /]# du -hs /opt/elasticsearch-1.4.2/

3.4G /opt/elasticsearch-1.4.2/

 

系统管理

查看Linux版本

root@iZ2598egy3qZ admin]# uname -a
Linux iZ2598egy3qZ 3.10.0-123.9.3.el7.x86_64 #1 SMP Thu Nov 6 15:06:03 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@iZ2598egy3qZ admin]# cat /proc/version
Linux version 3.10.0-123.9.3.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Thu Nov 6 15:06:03 UTC 2014
[root@iZ2598egy3qZ admin]# lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID:    CentOS
Description:    CentOS Linux release 7.0.1406 (Core)
Release:    7.0.1406
Codename:    Core
[root@iZ2598egy3qZ admin]# cat /etc/issue
\S
Kernel \r on an \m

[root@iZ2598egy3qZ admin]# cat /etc/redhat-release
CentOS Linux release 7.0.1406 (Core)

报告程序状况 ps

-a  显示所有终端机下执行的程序,除了阶段作业领导者之外。

-e/A  显示所有程序。

-f  显示UID,PPIP,C与STIME栏位。

-T  显示现行终端机下的所有程序。
u  以用户为主的格式来显示程序状况。

-w或w  采用宽阔的格式来显示程序状况。

查看进程CPU和Memory使用情况

#ps auxw --sort=%cpu

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

service  24691  0.0  0.0  35244  9252 ?        SN   22:48   0:02 indext: ATOMZtid=40037;acct=sp10001b4d
service  24692  0.1  0.0  25012  5036 ?        SN   22:48   0:03 downloadt: ATOMZtid=40038;acct=sp10001b4d
service  23509 95.5  0.0   2828  1696 ?        Ss   22:48  38:59 pvmd3
#ps -ef|grep "crawlit"

#ps auxw --sort=%cpu|head

#ps auxw --sort=%cpu|tail

显示内存状态 free

free [-bkmotV][-s <间隔秒数>]

-m  以MB为单位显示内存使用情况。

-s<间隔秒数>  持续观察内存使用状况。

$ free -mt
             total       used       free     shared    buffers     cached
Mem:         12007      11610        397          0        335       9917
-/+ buffers/cache:       1357      10650
Swap:        14511          0      14510
Total:       26518      11610      14908

显示,管理执行中的程序 top

d<间隔秒数>  设置top监控程序执行状况的间隔时间,单位以秒计算。

[service@server51 ~]$ top d 5
top - 19:44:48 up 33 days, 12:06,  2 users,  load average: 1.01, 1.05, 1.01
Tasks: 404 total,   2 running, 402 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  4.7%sy,  1.6%ni, 93.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  12296044k total, 11895652k used,   400392k free,   346548k buffers
Swap: 14859352k total,      324k used, 14859028k free, 10156876k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
26294 service   39  15 24996 2924 1688 R 100.2  0.0  23812:08 crawlt-il
    1 root      15   0 10352  700  588 S  0.0  0.0   3:37.18 init
    2 root      RT  -5     0    0    0 S  0.0  0.0   0:21.47 migration/0
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.07 ksoftirqd/0
...

 

删除执行中的程序或工作 kill

kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]

预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。

kill all processes that match certain key:

ps aux | grep mq_connectors_qdt | awk '{print $2}' | xargs kill -9

 

查看进程内存占用情况并批量杀掉进程

ps auxw --sort=%mem
ps -ef | grep activemq | grep -v grep | awk '{print "kill -9 "$2}'|sh

[root@ddtpm admin]# free -m
total used free shared buff/cache available
Mem: 31346 29049 887 131 1409 1717
Swap: 0 0 0
[root@ddtpm admin]# free -m
total used free shared buff/cache available
Mem: 31346 5336 24555 129 1453 25433
Swap: 0 0 0

 

以树状图显示程序 pstree

远端登入的Shell rsh

显示系统负载状况 tload

显示系统信息 uname

[service@t1-sp-mi0001 ~]$ uname -a
Linux t1-sp-mi0001.t1.atomz.com 2.6.18-194.32.1.el5 #1 SMP Wed Jan 5 17:52:25 EST 2011 x86_64 x86_64 x86_64 GNU/Linux

# useradd --help
Usage: useradd [options] LOGIN

Options:
  -b, --base-dir BASE_DIR       base directory for the home directory of the
                                new account
  -c, --comment COMMENT         GECOS field of the new account
  -d, --home-dir HOME_DIR       home directory of the new account
  -D, --defaults                print or change default useradd configuration
  -e, --expiredate EXPIRE_DATE  expiration date of the new account
  -f, --inactive INACTIVE       password inactivity period of the new account
  -g, --gid GROUP               name or ID of the primary group of the new
                                account
  -G, --groups GROUPS           list of supplementary groups of the new
                                account
  -h, --help                    display this help message and exit
  -k, --skel SKEL_DIR           use this alternative skeleton directory
  -K, --key KEY=VALUE           override /etc/login.defs defaults
  -l, --no-log-init             do not add the user to the lastlog and
                                faillog databases
  -m, --create-home             create the user's home directory
  -M, --no-create-home          do not create the user's home directory
  -N, --no-user-group           do not create a group with the same name as
                                the user
  -o, --non-unique              allow to create users with duplicate
                                (non-unique) UID
  -p, --password PASSWORD       encrypted password of the new account
  -r, --system                  create a system account
  -s, --shell SHELL             login shell of the new account
  -u, --uid UID                 user ID of the new account
  -U, --user-group              create a group with the same name as the user
  -Z, --selinux-user SEUSER     use a specific SEUSER for the SELinux user mapping

chkconfig

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。

使用语法:
chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]

chkconfig 在没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回true,否则返回false。如果在服务名后面指 定了on,off或者reset,那么chkconfi 会改变指定服务的启动信息。on和off分别指服务被启动和停止,reset指重置服务的启动信息,无论有问题的初始化脚本指定了什么。on和off开 关,系统默认只对运行级3,4,5有效,但是reset可以对所有运行级有效。

参数用法:
   --add  增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
   --del  删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。
   --level<等级代号>  指定读系统服务要在哪一个执行等级中开启或关毕。
      等级0表示:表示关机
      等级1表示:单用户模式
      等级2表示:无网络连接的多用户命令行模式
      等级3表示:有网络连接的多用户命令行模式
      等级4表示:不可用
      等级5表示:带图形界面的多用户模式
      等级6表示:重新启动
      需要说明的是,level选项可以指定要查看的运行级而不一定是当前运行级。对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。

    chkconfig --list [name]:显示所有运行级系统服务的运行状态信息(on或off)。如果指定了name,那么只显示指定的服务在不同运行级的状态。
    chkconfig --add name:增加一项新的服务。chkconfig确保每个运行级有一项启动(S)或者杀死(K)入口。如有缺少,则会从缺省的init脚本自动建立。
    chkconfig --del name:删除服务,并把相关符号连接从/etc/rc[0-6].d删除。
    chkconfig [--level levels] name:设置某一服务在指定的运行级是被启动,停止还是重置。

运行级文件:
每 个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。第一行告诉chkconfig缺省启动的运行级以及启动和 停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。第二行对服务进行描述,可以用\ 跨行注释。
例如,random.init包含三行:
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for \
# higher quality random number generation.

使用范例:
chkconfig --list        #列出所有的系统服务
chkconfig --add httpd        #增加httpd服务
chkconfig --del httpd        #删除httpd服务
chkconfig --level httpd 2345 on        #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态
chkconfig --list        #列出系统所有的服务启动情况
chkconfig --list mysqld        #列出mysqld服务设置情况
chkconfig --level 35 mysqld on        #设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭
chkconfig mysqld on        #设定mysqld在各等级为on,“各等级”包括2、3、4、5等级

如何增加一个服务:
1.服务脚本必须存放在/etc/ini.d/目录下;
2.chkconfig --add servicename
    在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;
3.chkconfig --level 35 mysqld on
    修改服务的默认启动等级。

 

文件管理

http://www.cnblogs.com/sunleecn/archive/2011/11/01/2232210.html

查找文件或目录 find

从根目录开始查找所有扩展名为.log的文本文件,并找出包含”ERROR”的行
find / -type f -name "*.log" | xargs grep "ERROR"

 

xargs

http://os.51cto.com/art/201205/334923.htm

xargs是一个非常强大的命令,可以取一个命令的输出作为另一个命令的参数。

当你想下载一些URL,这些URL都保存在一个文件里,你可以以如下的方式使用xargs命令

# cat url-list.txt | xargs wget –c

找出所有的.jpg格式的图片,并将其归档。

# find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

 

查找文件里符合条件的字符串  grep

grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

-e<范本样式>或--regexp=<范本样式> 指定字符串做为查找文件内容的范本样式。

-f<范本文件>或--file=<范本文件> 指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。

从文件内容查找匹配指定字符串的行:
$ grep "被查找的字符串" 文件名
从文件内容查找与正则表达式匹配的行:
$ grep –e “正则表达式” 文件名
查找时不区分大小写:
$ grep –i "被查找的字符串" 文件名
查找匹配的行数:
$ grep -c "被查找的字符串" 文件名
从文件内容查找不匹配指定字符串的行:
$ grep –v "被查找的字符串" 文件名

查找某个目录下所有python文件:

grep -r --include=*.py "install_path" ./

 

辨识文件类型 file

$ file kendal
kendal: directory

$ file kendal/get.sh
kendal/get.sh: Bourne shell script text executable

 

显示文件属性 lsattr

 

改变文件或目录时间 touch

变更文件或目录的权限 chmod权限范围的表示法如下:
 u:User,即文件或目录的拥有者。
 g:Group,即文件或目录的所属群组。
 o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。
 a:All,即全部的用户,包含拥有者,所属群组以及其他用户。

 有关权限代号的部分,列表于下:
 r:读取权限,数字代号为"4"。
 w:写入权限,数字代号为"2"。
 x:执行或切换权限,数字代号为"1"。
 -:不具任何权限,数字代号为"0"。
 s:特殊?b>功能说明:变更文件或目录的权限

查看文件内容tail head

  1. 用法:tail [选项]... [文件]...  
  2. 显示每个指定文件的最后10 行到标准输出。

持续查看最新更新的内容:

tail -f filename

查看文件内容cat

把档案串连接后传到基本输出

-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行

 

tar -xzvf .tar.gz
      tar [-cxtzjvfpPN搜索] 文件与目录 ....
      参数:
      -c :建立一个压缩文件的参数指令(create 的意思);
      -x :解开一个压缩文件的参数指令!
      -t :查看 tarfile 里面的文件!
      特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
      因为不可能同时压缩与解压缩。
      -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
      -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
      -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
      -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!

 

解压:tar xvfz xxx.tar.gz.
压缩:tar czf xxx.tar.gz xxxx

 

磁盘管理

显示磁盘的相关信息 df

df可显示磁盘的文件系统与使用情形。

-h, --human-readable
              print sizes in human readable format (e.g., 1K 234M 2G)

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1             20G  1.5G   18G   8% /
tmpfs                 3.9G     0  3.9G   0% /dev/shm

 

显示目录或文件的大小 du

du会显示指定的目录或文件所占用的磁盘空间。

-h, --human-readable
              print sizes in human readable format (e.g., 1K 234M 2G)

-s, --summarize
              display only a total for each argument

-m     like --block-size=1M

-c, --total
              produce a grand total

 

$ du -hs /home
44K    /home

$ du -cm /home/httpd/jenkins/jobs/UnitTest/workspace|sort -rn|head
4313 total
4313 /home/httpd/jenkins/jobs/UnitTest/workspace
3923 /home/httpd/jenkins/jobs/UnitTest/workspace/report
3922 /home/httpd/jenkins/jobs/UnitTest/workspace/report/html
380 /home/httpd/jenkins/jobs/UnitTest/workspace/report/html/20140301_201705
380 /home/httpd/jenkins/jobs/UnitTest/workspace/report/html/20140228_202204
379 /home/httpd/jenkins/jobs/UnitTest/workspace/report/html/20140224_202101
374 /home/httpd/jenkins/jobs/UnitTest/workspace/report/html/20140216_182101
374 /home/httpd/jenkins/jobs/UnitTest/workspace/report/html/20140202_182936
373 /home/httpd/jenkins/jobs/UnitTest/workspace/report/html/20140209_182427

 

显示磁盘已使用的空间与限制 quota

执行quota指令,可查询磁盘空间的限制,并得知已使用多少空间。

以树状图列出目录的内容 tree

 

其它

yum

yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

yum install package1
yum clean all
yum update
yum list

nohup

用途:不挂断地运行命令。

语法:nohup Command [ Arg ... ] [ & ]

描述:

  1. nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。
  2. 要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
  3. 如果不将 nohup 命令的输出重定向,输出将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

Example 1:

[httpd@vm514.dev jenkins]$ cat start_jenkins.sh
#!/bin/bash
export JENKINS_HOME=/home/httpd/jenkins
JENKINS_WAR=$JENKINS_HOME/jenkins.war
JENKINS_LOG=$JENKINS_HOME/jenkins.log
nohup nice java -jar $JENKINS_WAR --httpPort=8080 --httpsListenAddress=0.0.0.0 > $JENKINS_LOG 2>&1 &

Example 2:

nohup command > myout.file 2>&1 &

0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;

nice

调整程序运行的优先级

格式: nice [OPTION] [command [arguments...]]

在当前程序运行优先级基础之上调整指定值得到新的程序运行优先级,用新的程序运行优先级运行命令行"command [arguments...]"。优先级的范围为-20 ~ 19等40个等级,其中数值越小优先级越高,数值越大优先级越低,既-20的优先级最高,19的优先级最低。

若不带任何参数运行命令nice,则显示出当前的程序运行优先级。

[httpd@vm514.dev jenkins]$ nice
0

若 nice命令未指定优先级的调整值,则以缺省值10来调整程序运行优先级,既在当前程序运行优先级基础之上增加10。

# nice nice
10

# nice nice nice
19

网络通信和安全

显示网络状态 netstat

从整体上看,netstat的输出结果可以分为两个部分:
一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。
举个例子,你用浏览器打开百度网站时,自己的 IP 地址就是内部地址了,也叫“本地地址”,百度服务器的IP就是外部地址,也就“远程地址”。

$ netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c
      9 CLOSE_WAIT
    121 ESTABLISHED
      1 FIN_WAIT1
      7 FIN_WAIT2
     10 LISTEN
   4965 TIME_WAIT

发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决,
vi /etc/sysctl.conf

编辑文件,加入以下内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然后执行 /sbin/sysctl -p 让参数生效。
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout 修改系統默认的 TIMEOUT 时间

查看哪些IP连接本机
netstat -an
查看TCP连接数
1)统计80端口连接数
netstat -nat|grep -i "80"|wc -l
2)统计httpd协议连接数
ps -ef|grep httpd|wc -l
统计已连接上的,状态为“established
netstat -na|grep ESTABLISHED|wc -l
$ netstat -na | grep ESTAB | grep 8090 | wc -l
15
$ netstat -na | grep ESTAB | grep 8090
tcp        0      0 123.56.104.184:8090         111.205.208.29:54098        ESTABLISHED
tcp        0      0 123.56.104.184:8090         111.205.208.29:54097        ESTABLISHED
tcp        0      0 123.56.104.184:8090         111.205.208.29:54099        ESTABLISHED

netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]

http://blog.csdn.net/he_jian1/article/details/40787269

一、查看哪些IP连接本机
netstat -an
二、查看TCP连接数
1)统计80端口连接数
netstat -nat|grep -i "80"|wc -l
2)统计httpd协议连接数
ps -ef|grep httpd|wc -l
3)、统计已连接上的,状态为“established
netstat -na|grep ESTABLISHED|wc -l
4)、查出哪个IP地址连接最多,将其封了.
netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n
netstat -na|grep SYN|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n

 

Linux curl使用简单介绍 

http://www.cnblogs.com/-clq/archive/2012/01/29/2330827.html

$ curl -o page.html http://www.linuxidc.com

Wget和curl区别

http://blog.chinaunix.net/uid-20613650-id-3269728.html

  1. curl是libcurl这个库支持的,wget是一个纯粹的命令行命令。
  2. curl支持更多的协议。 curl supports FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP and RTSP at the time of this writing. Wget supports HTTP, HTTPS and FTP.   
  3. curl 默认支持HTTP1.1(也支持1.0),而wget仅仅支持HTTP1.0规范。      
  4. curl在指定要下载的链接时能够支持URL的序列或集合,而wget则不能这样    
  5. wget支持递归下载,而curl则没有这个功能。     

查看网络流量:网卡总流量和进城流量

Linux查看实时网卡流量的几种方式

https://www.jianshu.com/p/b9e942f3682c
sar –n DEV  1 2

监控总体带宽使用(批量式输出)――dstat

[root@iZ25e92bkosZ ~]# dstat
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
  2   1  98   0   0   0|  75B   17k|   0     0 |   0     0 | 223   821
 17   2  79   1   1   1|   0   352k| 179k  170k|   0     0 |3115  2550
...

每个进程的带宽使用――nethogs

http://man.linuxde.net/nethogs

# nethogs -d 5 eth1

NetHogs version 0.8.0
  PID USER     PROGRAM                                                                           DEV        SENT      RECEIVED       
1918  admin    /usr/bin/java                                                                     eth0       9.466      24.627 KB/sec
1087  memcachedmemcached                                                                         eth0     137.876    6.938 KB/sec
?     root     10.162.210.248:11211-10.170.207.50:40538                                                     0.085    0.135 KB/sec
?     root     10.162.210.248:11211-10.170.207.50:40535                                                     0.085    0.135 KB/sec
?     root     10.162.210.248:11211-10.170.207.50:40537                                                     0.071    0.130 KB/sec
?     root     10.162.210.248:11211-10.170.207.50:40533                                                     0.071    0.130 KB/sec
?     root     10.162.210.248:11211-10.170.207.50:40548                                                     0.119    0.124 KB/sec
?     root     10.162.210.248:11211-10.170.207.50:40541                                                     0.071    0.120 KB/sec
?     root     10.162.210.248:57007-100.100.18.50:80                                                        0.000    0.000 KB/sec
?     root     10.162.210.248:11211-10.170.207.50:40530                                                     0.000    0.000 KB/sec
969   root     /usr/local/cloudmonitor/jre/bin/java                                              eth0       0.000    0.000 KB/sec
?     root     10.162.210.248:11211-10.170.207.50:40509                                                     0.000    0.000 KB/sec
?     root     10.162.210.248:11211-10.170.207.50:40508                                                     0.000    0.000 KB/sec
?     root     10.162.210.248:56995-100.100.18.50:80                                                        0.000    0.000 KB/sec
?     root     10.162.210.248:11211-10.170.207.50:40502                                                     0.000    0.000 KB/sec
?     root     unknown TCP                                                                                  0.000    0.000 KB/sec

iptables

CentOS 7使用firewalld 取代 iptables

查看已添加的iptables规则
iptables -L -n -v

配置iptables把80端口转到8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8090
service iptables save

# iptables -nvL --line-number
# vim /etc/sysconfig/iptables
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 8090

删除转发规则的第一条规则,1就是num
iptables -t nat -D PREROUTING 1.

开放端口

# iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# service iptables save


查看防火墙状态,会显示相关规则
service iptables status 

查看普通表规则
iptables -nL

查看NAT表规则
iptables -t nat -L

删除已添加的iptables规则
将所有iptables以序号标记显示,执行:
iptables -L -n --line-numbers
比如要删除INPUT里序号为8的规则,执行:
iptables -D INPUT 8

iptables -I INPUT -s 123.45.6.7 -j DROP       #屏蔽单个IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP      #封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP    #封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP    #封IP段即从123.45.6.1到123.45.6.254的命令是

iptables -I INPUT -p tcp --dport 8082 -s 192.168.1.0/24 -j DROP  #只对192.168.1.0~192.168.1.255封8082端口

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

firewalld

 

在 最新的 CentOS 7 linux 系统里,将默认的防火墙更改为firewalld, 取代了之前的iptables 防火墙

 

firewalld是centos7的一大特性,最大的好处有两个:支持动态更新,不用重启服务;第二个就是加入了防火墙的“zone”概念

 

zone概念:硬件防火墙默认一般有三个区,firewalld引入这一概念系统默认存在以下区域

 

  • drop:默认丢弃所有包
  • block:拒绝所有外部连接,允许内部发起的连接
  • public:指定外部连接可以进入
  • external:这个不太明白,功能上和上面相同,允许指定的外部连接
  • dmz:和硬件防火墙一样,受限制的公共连接可以进入
  • work:工作区,概念和workgoup一样,也是指定的外部连接允许
  • home:类似家庭组
  • internal:信任所有连接

#  firewall-cmd --get-active-zones

public

  interfaces: eno1

#  firewall-cmd --set-default-zone=public

# firewall-cmd --zone=public --add-port=8090/tcp --permanent

# firewall-cmd --zone=public --add-port=11211/tcp --permanent

# firewall-cmd --zone=public --add-port=3306/tcp --permanent

# firewall-cmd --zone=public --add-port=11422/tcp --permanent

# systemctl restart firewalld

# firewall-cmd --zone=public --list-ports

3306/tcp 8090/tcp 11211/tcp 11422/tcp

 

 

 

posted on 2012-06-14 11:15  Mark Jiao  阅读(773)  评论(0编辑  收藏  举报

导航