(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