linux命令总结(运维必备)

(1).lsb_release:
打印本系统发行版的所有信息,比如发行版的ID,描述信息,具体版本,代号。
若出现提示:
-bash: lsb_release: command not found
则执行命令:yum install redhat-lsb -y
然后就可以使用lsb_release命令了
若使用此命令后还是显示上述提示,则输入以下命令:cat /etc/redhat-release

还有几种查看版本信息的方式:
cat /etc/issue
cat /proc/version
uname -a
lsb_release -a

cat /etc/os-release   #输出包含系统版本号和其他发行版信息的文件内容

(2)ifconfig:
用于显示或配置网络设备(网络接口卡)的命令。
若出现提示:
-bash: ifconfig: command not found
则执行命令:/sbin/ifconfig

(3)df -hl:
查看磁盘剩余空间的命令。
例如:
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 39G 17G 20G 46% /
/dev/sda5 217G 111G 96G 54% /data
/dev/sda1 244M 12M 219M 6% /boot
tmpfs 7.9G 0 7.9G 0% /dev/shm

拿第一条记录解释一下:sd硬盘接口的硬盘a,第二个分区(2),容量是39G,用了17G,可用是20G,因此利用率是46%, 被挂载到根分区目录上(/)。

若有些分区满了,需要查看到底哪些大文件占用空间。

单独进入你认为可能有大文件的目录下,执行:du -sh * 

一般来说都是日志文件等会大量占用空间

du -sh * | sort -n 按照当前路径下文件大小排序显示(从小打到排序)



(4)查看系统网关配置:route -n
例如其中有一行为:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 1.2.3.4 0.0.0.0 UG 0 0 0 em1

则这里1.2.3.4为默认网关,一般写在最后一行

(5)查看系统启动后的命令脚本:vim /etc/rc.local
(6)查看系统安全日志:
more /var/log/secure
more /var/log/secure* |grep -e 'Failed password' -e 'Accepted password'

(7)建系统用户

1.格式

  useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name

2.主要参数

  -c:加上备注文字,备注文字保存在passwd的备注栏中。

  -d:指定用户登入时的主目录,替换系统默认值/home/<用户名>

  -D:变更预设值。

  -e:指定账号的失效日期,日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效。

  -f:指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1.

  -g:指定用户所属的群组。值可以使组名也可以是GID。用户组必须已经存在的,期默认值为100,即users。

  -G:指定用户所属的附加群组。

  -m:自动建立用户的登入目录。

  -M:不要自动建立用户的登入目录。

  -n:取消建立以用户名称为名的群组。

  -r:建立系统账号。

  -s:指定用户登入后所使用的shell。默认值为/bin/bash。

  -u:指定用户ID号。该值在系统中必须是唯一的。0~499默认是保留给系统用户账号使用的,所以该值必须大于499。

3.说明

  useradd可用来建立用户账号,它和adduser命令是相同的。账号建好之后,再用passwd设定账号的密码。使用useradd命令所建立的账号,实际上是保存在/etc/passwd文本文件中。

(8)修改用户权限或文件权限

修改用户权限

用户权限可以通过修改权限文件来进行修改。

visudo  #相当于修改/etc/sudoers文件,在这个文件中可以指定用户组及用户权限可以有哪些

将用户加入用户组

usermod -aG 用户组名 用户名 

修改文件权限: 可以通过两个途径->修改文件所属用户或修改文件本身的权限

修改文件所属用户或用户组:使用命令chown

# 递归修改文件夹所属用户
# 格式为:sudo chown -R 用户名:用户组名 目录名/文件名
# 需要使用sudo或者在root用户下执行
sudo chown user1:user1 test

修改文件权限,使用命令:chmod

查看用户权限:sudo -l -U shtest   #shtest是用户名

(9)查看系统监听某服务的端口号

netstat -ntlp | grep sshd #sshd是服务名称

与netstat作用相似的另一个命令是ss

ss可以用来导出socket 的统计数据。 相较于netstat,他能显示更详细的TCP 状态信息。

ss -antl   显示处在listening状态的TCP套接字且不尝试解析服务的名字

(10)查看系统连接数

查看系统总连接数

netstat -na|wc -l

查看系统各种状态连接数

netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c

例如下面这种结果:

 状态:描述 
CLOSED:无连接是活动的或正在进行 
LISTEN:服务器在等待进入呼叫 
SYN_RECV:一个连接请求已经到达,等待确认 
SYN_SENT:应用已经开始,打开一个连接 
ESTABLISHED:正常数据传输状态 
FIN_WAIT1:应用说它已经完成 
FIN_WAIT2:另一边已同意释放 
ITMED_WAIT:等待所有分组死掉 
CLOSING:两边同时尝试关闭 
TIME_WAIT:另一边已初始化一个释放 
LAST_ACK:等待所有分组死掉

(11)查看系统日志

查看系统重启关机记录 

last | grep reboot
last | grep shutdown

实时打印出日志文件中新增的内容

 watch -d -n 1 cat /var/log/messages  //-n 表示多少秒刷新-次日志文件 ,ctrl+c推出

linux日志文件说明

/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
/var/log/secure 与安全相关的日志信息
/var/log/maillog 与邮件相关的日志信息
/var/log/cron 与定时任务相关的日志信息
/var/log/spooler 与UUCP和news设备相关的日志信息
/var/log/boot.log 守护进程启动和停止相关的日志消息
/var/log/wtmp 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件

last -f /var/log/wtmp 查看/var/log/wtmp日志

history也可以用于查看历史操作,但不能显示操作日期,可以修改/etc/bashrc文件来格式化history打印信息,在下面增加这几列:

HISTFILESIZE=2000   #用于设置History的最大保留条数
HISTSIZE=2000
HISTTIMEFORMAT='%F %T ' #日期格式
export HISTTIMEFORMAT

之后执行source /etc/bashrc,使其即时生效。注意:从修改完之后,日期才开始被记录到history中

(12)关于shell和bash的关系

shell是用户和Linux(或者更准确的说,是你和Linux内核)之间的接口程序。是一个命令语言解释器(command-language interpreter)。拥有自己内建的 shell 命令集。shell是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

以下是几种shell版本,bash是默认的:

  • sh(全称 Bourne Shell): 是UNIX最初使用的 shell,而且在每种 UNIX 上都可以使用。
  • Bourne Shell 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种 shell。
  • bash(全称 Bourne Again Shell): LinuxOS 默认的,它是 Bourne Shell 的扩展。

bash与 Bourne Shell 完全兼容,并且在 Bourne Shell 的基础上增加了很多特性。可以提供命令补全,命令编辑和命令历史等功能。它还包含了很多 C Shell 和 Korn Shell 中的优点,有灵活和强大的编辑接口,同时又很友好的用户界面。

使用命令:ps -p $$      可以查看系统使用的shell版本

(13)防火墙相关

# service iptables status #查看iptables状态

# service iptables restart #iptables服务重启

# service iptables stop #iptables服务禁用

需求:
只允许10.10.11.52的ip访问服务器23端口

有两种方法:

  • 执行iptables命令
  • 改iptables文件
1.使用iptables命令
//对整个服务器(全部ip)禁止23端口
iptables -I INPUT -p tcp --dport 23 -j DROP
//只允许10.10.10.52访问23端口
iptables -I INPUT -s 10.10.11.52 -p tcp --dport 23 -j ACCEPT
//将规则保存到iptables 中
service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
//重启iptables
[root@jiankunking]# service iptables restart
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]

2.修改iptables文件:vim /etc/sysconfig/iptables

关于iptables的基础知识及使用规范可参考博主的另一篇文章:iptables基础知识及使用规范

(14)查看某端口由哪些服务监听

 lsof -i:80

(15)mount与umount的使用

mount 源挂载路径 目标挂载路径

例如:ip:/vol/vol20_sns /nasweb  

umount -l 目标挂载路径   //解除挂载

(16)cp命令

 cp -rf /nasweb/www/sns/uploads/avatar/tem/* /web/avatar_bak/    ##表示将tem文件夹下的所有文件拷贝到/web/avatar_bak路径下,如果有相同文件将覆盖。这里注意avatar_bak后面的红色斜杠,可写可不写,都表示复制到该路径下。tem后面的/*必须要这样写,表示复制tem文件夹下的文件,不包括tem文件夹,这里不可省略,如果要表示复制tem文件夹及其下文件,则需要去掉/*

虽然f表示强制覆盖不提示,但有些系统还是会有提醒,使用命令alias查看会发现这样的设置:

系统已对cp命令默认带了 -i的参数,与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。所以此设置需要去掉,方法是编辑系统vi ~/.bashrc,注释掉alias cp=’cp -i’。然后保存退出,注销重新登录就生效了

cp -rf  /nasweb/www/sns/uploads/avatar/tem  /web/avatar_bak ##表示将tem文件夹及其下文件全部拷贝到/web/avatar_bak路径下,如果有相同文件将覆盖。

将一个文件夹dir1全部内容复制到文件夹dir2(如dir2不存在):cp -r dir1 dir2

将一个文件夹dir1全部内容复制到文件夹dir2(如dir2存在):cp dir1 dir2

(17)链接命令:

分为硬链接和软连接

  • 软链接:类似于 Windows 系统中给文件创建快捷方式,即产生一个特殊的文件,该文件用来指向另一个文件,此链接方式同样适用于目录。
  • 硬链接:我们知道,文件的基本信息都存储在 inode 中,而硬链接指的就是给一个文件的 inode 分配多个文件名,通过任何一个文件名,都可以找到此文件的 inode,从而读取该文件的数据信息。

而何为inode呢?inode保存文件节点信息,一个文件对应一个inode,内容包括文件权限、所有者、属主、大小、创建信息、block编号等。文件的实际内容保存在block块里,一个文件可能不止存在一个block块里,block可能是连续的也可能是分散的。

软连接语法:ln -s [选项] 源文件名 软链接文件名

选项:

  • -s:建立软链接文件。如果不加 "-s" 选项,则建立硬链接文件;
  • -f:强制。如果目标文件已经存在,则删除目标文件后再建立链接文件;
  • -n:把符号连接的目的目录视为一般文件。
  • -i:覆盖既有文件之前先询问用户。
     

以下例子为创建软连接,会创建一个名字为logs的软链接指向/web/logs这个文件夹。

注意:

  • 软链接文件的源文件必须写成绝对路径,不然会报错
  • 如果想要删除软链接,则使用rm命令,但一定要注意,慎用 TAB 键(也就是/)
  • 针对目录的软链接文件, rm -rf symbol_name 和 rm -rf symbol_name/ 结果是完成不同的,后面多一个/则会将链接到的实际文件夹下的所有内容全部清空,只留文件夹,这是个“坑”
  • 修改软链接的目标目录:ln -snf 【新目标目录】 【软链接地址】 

(18)统计文件或文件夹个数

(19)压缩/解压 命令

tar.gz格式:
解压:[*******]$ tar zxvf FileName.tar.gz    (unix下不适合此命令) 只解压其中一个文件,例如只要server.xml:tar zxvf tomcat8.tar.gz tomcat8/conf/server.xml
压缩:[*******]$ tar zcvf FileName.tar.gz DirName

若不想将绝对路径也压缩进去,可使用-C参数进行排除,比如:

tar zcvf file1.tar.gz -C /opt/test/ .     

##这样可以避免将/opt/test路径压缩进去,只压缩该路径下的所有文件,这里一定别漏写了后面的点.

 不解压查看文件详情:tar -tf 压缩文件名

zip格式:

解压:unzip

不解压查看文件详情:zipinfo 压缩文件名

(20)touch命令

touch命令有两个功能:

一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;

二是用来创建新的空文件。

(21)创建多级目录

mkdir -p /aaa/bbb/ccc      创建/aaa/bbb/ccc多级目录

(22)ls命令

  • 列出当前路径下的所有文件夹(默认只显示一级) 
ls -d */

ls -l |grep "^d"

ls -lF |grep "/$"

 效果如下: 

 参数l的作用是列出文件详细信息

  • 列出匹配文件或文件夹名称的文件

比如,列出/test目录下文件名以web开头的文件或文件夹的详细信息  

ls -l /test/web*

另:ll命令等同于ls -l 

  • 查询当前路径下的文件数量(不包括子文件)
#查看/home路径下的文件数量(两个方法):
ls -l /home | grep "^-" | wc -l;
find /home -maxdepth 1 -type f | wc -l;

#查询当前路径下的文件数量(两个方法):
ls -l | grep "^-" | wc -l;
find ./ -maxdepth 1 -type f | wc -l;

说明:

ls -l 查看目录下文件信息
grep ^- 过滤列表输出信息,只保留一般文件,如果要保留目录则为 ^d(只针对于ls -l命令)
wc -l 统计输出信息的行数。(ls -l和find都适用)

(23)修改DNS配置,改后即时生效

#修改/etc/resolv.conf
vi /etc/resolv.conf

 一般修改为:

nameserver 8.8.8.8
nameserver 8.8.7.7

(24) 快速删除大文件命令之rsync

原理:rsync原本是linux系统下的数据镜像备份工具。可以利用该特性,将一个空文件夹作为源备份数据,要删除的文件夹作为目标备份路径,这样相当于把一个空文件夹覆盖一个要删除的文件夹,执行速度比rm要快很多,举例如下:

#blank为空文件夹,/abc是要删除的文件夹 
nohup rsync --delete-before -aO /test/blank/ /abc/ &

(25) nohup命令

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

 语法:

nohup Command [ Arg … ] [ & ]

参数说明:

Command:要执行的命令。

Arg:一些参数,可以指定输出文件。

&:让命令在后台执行,终端退出后命令仍旧执行。

实例

以下命令在后台执行 root 目录下的 runoob.sh 脚本:

nohup /root/runoob.sh &

这时在root目录下可以看到生成了 nohup.out 文件。

如果要停止运行,需要使用以下命令查找到 nohup 运行脚本到 PID,然后使用 kill 命令来删除:

#使用以下两种方法查找进程号
#方法1:
ps -aux | grep "runoob.sh"

#方法2:
ps -ef | grep "runoob.sh"


#杀掉该进程
kill -9  进程号PID

(26) 查看进程树

pstree -ap|grep 进程名

#查看gunicorn进程树
pstree -ap|grep gunicorn

结果为以下截图,可以很直观的看到主进程号为16846,如果想停止该进程树,只需要kill掉主进程号即可

z

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值