查看系统信息
# 我是谁,who 命令经常在查看用户
who # 显示 用户 和终端数目和 pts
who -buT 显示所有用户登录时间,终端()
# -w 详细用户登录信息(机器使用时间,登录人数,机器负载,用户登录列表)
who am i # 当前所在终端用户
root pts/0 2018-12-14 22:29 (112.226.1.75)
uname -s -n -r -m -v #操作系统名、计算机名、版本号、计算机类型、时间等信息
# -> Linux gaox 3.10.0-693.2.2.el7.x86_64
#1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
uptime # 输出系统任务队列信息(用户,运行时间,负载)
last # 查看系统开机、登录历史
dmesg # 查看上次开机信息
# 查看指定格式的时间信息
date "+now time is %Y-%m-%d %H:%M:%S"
# -> now time is 2018-12-14 22:48:30
date -s "时间信息" # 设置时间(只有root账户可以)
# 查看centOS 版本
cat /etc/redhat-release
# 查看CPU、内存信息 /proc目录下存放着许多系统信息,还包括时间、定时器等
cat /proc/cpuinfo
cat /proc/meminfo
# 内存使用情况
free -h -c 7 # 查看内存使用情况,以人类习惯方式,数字三位+单位,1s的频率出现7词
1. 停掉进程
# 停用关闭25062进程
kill -9 25062
2. 网络命令
# ping 检测网络连通
ping www.gaox.site
# 显示相关网络配置信息
ifconfig
3. 系统端口
查看占用
# 查看当前系统端口的使用
netstat -an
netstat -aov
netstat -tunlp # 全部端口
# t (tcp) 仅显示tcp相关选项
# -u (udp)仅显示udp相关选项
# -n 拒绝显示别名,能显示数字的全部转化为数字
# -l 仅列出在Listen(监听)的服务状态
# -p 显示建立相关链接的程序名
lsof -i:12002 # lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000
开启
# 开启端口(以80端口为例)
方法一:
/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT 写入修改
/etc/init.d/iptables save 保存修改
service iptables restart 重启防火墙,修改生效
方法二:
vi /etc/sysconfig/iptables 打开配置文件加入如下语句:
-A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j ACCEPT 重启防火墙,修改完成
关闭
# 方法一:
/sbin/iptables -I INPUT -p tcp –dport 80 -j DROP 写入修改
/etc/init.d/iptables save 保存修改
service iptables restart 重启防火墙,修改生效
# 方法二:
vi /etc/sysconfig/iptables 打开配置文件加入如下语句:
-A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j DROP 重启防火墙,修改完成
查看端口状态
/etc/init.d/iptables status
4. free 查看系统内存
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
# 自定义格式输出
free -m | sed -n '2p' | awk '{print "used mem is "$3"M,total mem is "$2"M,used percent is "$3/$2*100"%"}'
# --》 used mem is 140M,total mem is 1839M,used percent is 7.61283%
5. ps 查看正在运行中的进程的信息
参数
- -a 显示所有进程(包括其他用户的进程)
- -u 用户以及其他详细信息
- -x 显示没有控制终端的进程
查找关于java的进程
ps -aux |grep java
pstree # 显示当前系统运行状态的进程树
# 设置语言环境英文
export LANG=en
#进程可以有子进程,bash下再打开一个子bash进程
bash
# 查看目录 最基础命令
ls
ll # ls -l 的缩写 查看文件的详情
ls -a # 查看所有文件包含隐藏文件和 . 开头的文件(包含上层目录路径)
# 多种命令可以组合之用 如:ll -a
6. 文件
查看
#有非常多的工具可以查看、编辑
cat
tail
more
less
vim # vi
# 这些又有很多的功能,我在其他的文章里会再具体讲解的。
增删改
# 新建 filename.fix 文件名.后缀
touch filename.fix
# 强制删除文件不警告
rm -f filename.fix
# 重命名(filename.fix文件夹,dd.txt改后的文件名)
mv filename.fix dd.txt
# 移动(后面跟路径就是移动)(有路径又有文件名,移动并改名)
mv filename.fix /home/gaox/dd.txt
# 复制
cp 文件夹 目录/新文件夹名
目录和文件的区别
我个人的理解一般文件夹在其后有“/”跟随,但不是必须
另外文件夹和文件的创建方式不同
文件夹:mkdir
文件 :touch
创建多级目录,并进入新创建的目录
一般我们需要创建多级目录就需要加上-p选项
编辑用户目录下:vim /root/.bashrc 在末尾添加以下内容
# mkdir -p
mkr()
{
mkdir -p "$1"
}
# mkdir -p && cd
mkcd()
{
mkdir -p "$1" && cd "$1"
}
保存退出后,刷新引用该文件,输入如下命令:
source .bashrc
10. history 历史文件
首先要介绍的是命令行工具 history,它能帮你记住那些你曾经用过的命令。包括应用最广泛的 Bash 在内的大多数 Linux shell,都会创建一个历史文件来包含那些你输入过的命令。如果你用的是 Bash,这个历史文件就是 /home/
这个历史文件是纯文本格式的,你可以用任意的文本编辑器打开来浏览和搜索。
1. 如何轻松记住 Linux 命令
2. Linux 新手往往对命令行心存畏惧。部分原因是因为需要记忆大量的命令,毕竟掌握命令是高效使用命令行的前提。
3. 不幸的是,学习这些命令并无捷径,然而在你开始学习命令之初,有些工具还是可以帮到你的。
显示历史命令
语法格式是:history [option] [arg…]
如果不带任何参数,则history命令会显示历史命令的清单
如果history 后给出一个正整数(如50),就只显示历史表中的最后50行命令
如果history后给出一个文件名,就把它作为历史文件名
常用的选项有:
- -a 在历史文件中添加“新”历史命令行。
- -n 从历史文件中读取尚未读入的历史命令行,添加到当前历史清单中。
- -r 读取历史文件的内容,并把它作为当前的历史命令。
- -w 把当前的历史写到历史文件中,覆盖原有内容。
- -c 删除历史清单中所有的项。
执行历史命令
执行历史命令是命令替换之一,它以字符“!”开头、后随1个或多个字符来定义用户所需的某种类型的历史命令
基本的事件指定字格式
格 式 | 意 义 |
---|---|
!! | 重复上一条命令,也就是“!-1” |
!n | 重新执行第n条历史命令 |
!-n | 重新执行倒数第n条历史命令。!-1就等于!! |
!string | 重新执行以字符串string开头的最近的历史命令行。 |
!?string? | 重新执行最近的、包含字符串string的那条历史命令 |
!# | 到现在为止所输入的整个命令行 |
配置历史命令环境
# 在默认方式下,bash使用用户主目录下面的文件“.bash_history”来保存命令历史
# 改变存放历史命令的文件
$ HISTFILE="/home/mengqc/.myhistory"
# 重新设定能够保留的命令个数
$ HISTSIZE=600
11. apropos
确实存在一个可以帮你找到其他命令的命令。这个命令就是 apropos,它能帮你找出合适的命令来完成你的搜索。比如,假设你需要知道哪个命令可以列出目录的内容,你可以运行下面命令:apropos "list directory"
这就搜索出结果了,非常直接。给 “directory” 加上复数后再试一下。apropos "list directories"
这次没用了。apropos 所作的其实就是搜索一系列命令的描述。描述不匹配的命令不会纳入结果中。
还有其他的用法。通过 -a 标志,你可以以更灵活的方式来增加搜索关键字。试试这条命令: 你会觉得应该会有一些匹配的内容出现,比如 grep 对吗? 然而,实际上并没有匹配出任何结果。再说一次,apropos 只会根据字面内容进行搜索。
现在让我们试着用 -a 标志来把单词分割开来。(LCTT 译注:该选项的意思是“and”,即多个关键字都存在,但是不需要正好是连在一起的字符串。)apropos "match" -a "pattern"
这一下,你可以看到很多期望的结果了。
apropos 是一个很棒的工具,不过你需要留意它的缺陷。
12. 用户命令
# 查看所有登录的用户
users
# 创建用户 设置一个空密码 指定home目录
useradd -p '' -d /home/san/ gaox
# 为其设置密码
passwd eric
# 输入两次密码(密码要符合要求复杂度)
# 修改用户 修改home目录为/home/lisa
usermod -d /home/lisa
# 删除用户
userdel
13. 代码补全
可以输入目录名或文件名的开头部分,然后按Tab键,Linux根据输入的字母查找以这些字母开头的目录或文件,并自动补全剩余的部分。
14. alias 别名
# 没有指定参数是默认输出别名清单
alias
# 定义别名时,往往用单引号将它代表的内容括起来,从而防止shell对其中的内容产生歧义,如对空格和特殊字符另作解释
alias lla 'ls -l -a'
# 取消别名
unalias lla
# 一次性取消所有别名 unalias -a
15. 修改查看主机名
# 查看当前主机名
hostname
# 修改当前主机名
vi /etc/hostname
# 永久设置主机名为centos7_gaox
hostnamectl set-hostname centos7_gaox
hostnamectl命令功能较为完善,可以使用此命令设置。
top 显示当前系统中进程占用资源的情况
top命令会显示当前系统中占用资源最多的一些进程(默认以CPU占用率排序)如果你想改变排序方式,可以在结果列表中点击O(大写字母O)会显示所有可用于排序的列,这个时候你就可以选择你想排序的列。
如果只想显示某个特定用户的进程,可以使用-u选项。
$ top -u gaox
whereis 程序安装目录
$ whereis java
java: /usr/bin/java /usr/java/jdk1.8.0_201-amd64/bin/java /usr/share/man/man1/java.1
which 程序命令位置
$ which java
/usr/bin/java
locate 显示某个指定文件(或一组文件)的路径
locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
$ locate /etc/sh
搜索etc目录下所有以sh开头的文件。
$ locate ~/m
搜索用户主目录下,所有以m开头的文件。
$ locate -i ~/m
搜索用户主目录下,所有以m开头的文件,并且忽略大小写。
网络命令
# ping 检测网络连通
$ ping www.gaox.site
# 显示相关网络配置
$ ifconfig
# 查看所有网络接口及其状态
$ ifconfig -a
使用up和down命令启动或停止某个接口
$ ifconfig eth0 up
$ ifconfig eth0 down
关机
# 关闭系统并立即关机
$ shutdown -h now
# 10分钟后关机
$ shutdown -h +10
# 重启
$ shutdown -r now
# 重启期间强制进行系统检查
$ shutdown -Fr now
服务
service命令用于运行System V init脚本,这些脚本一般位于/etc/init.d文件下,这个命令可以直接运行这个文件夹里面的脚本,而不用加上路径。
# 查看服务状态
$ service ssh status
# 查看所有服务状态
$ service --status-all
# 重启服务
$ service ssh restart
定时任务
# 查看某个用户的crontab入口
$ crontab -u john -l
# 设置一个每十分钟执行一次的计划任务
/10 * /home/ramesh/check-disk-space