layout: post
title: linux的常用命令
subtitle: linux的常用命令
date: 2019-08-11
author: NSX
header-img: img/post-bg-ios9-web.jpg
catalog: true
tags:
- 技术
- Linux


linux 的一些常用命令

  • 文件目录操作
  • 日常开关机
  • 用户管理
  • 搜索命令
  • 文本内容搜索
  • 任务操作
  • 系统管理
  • 网络相关
  • ssh远程登录服务器
  • scp远程拷贝文件
  • 解压tar文件
  • 其他应用

    文件目录操作

  • 文件浏览

  1. cat, more, less, head, tail
  • ls 显示文件 / 目录属性
  1. 常见参数:
  2. -l :列出长数据串,包含文件的属性与权限数据等
  3. -a :列出全部的文件,连同隐藏文件(开头为。的文件)一起列出来(常用)
  4. -d :仅列出目录本身,而不是列出目录的文件数据
  5. -h :将文件容量以较易读的方式(GBkB 等)列出来
  6. -R :连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来
  7. 示例: ls -l /tmp
  • pwd 显示当前路径
  • mkdir 创建目录
  1. mkdir newdir
  2. mkdir -p newdir/newdir #递归创建目录
  • touch 创建文件
  • mv 移动文件 / 重命名
  1. mv filename dirname 移动文件
  2. mv oldfilename newfilename 对文件重命名
  • rm 删除文件
  1. -i 交互式
  2. -r 递归
  3. -f 强制
  • ln 创建链接
  1. ln /etc/passwd passwd 创建硬链接
  2. ln -s 创建软链接
  • chmod 更改文件权限
  1. r=4,w=2,x=1
  2. chmod xxx filename

日常开关机

  1. shutdown
  2. -r 关机重启
  3. -h 关机不重启
  4. now 立刻关机

用户管理

实现用户账号的管理,要完成的工作主要有如下几个方面:

  • 用户账号的添加、删除与修改
  • 用户密码的管理
  • 用户组的管理

Linux系统用户账号的管理

  1. 添加新的用户账号使用 useradd 命令,其语法如下:
  1. useradd [-u|-g|-m|-d|-s] username
  2. 其中各选项含义如下:
  3. -c comment 指定一段注释性描述。
  4. -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
  5. -g 用户组 指定用户所属的用户组。
  6. -G 用户组,用户组 指定用户所属的附加组。
  7. -s Shell文件 指定用户的登录Shell
  8. -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
  9. -m/M:创建家目录 /M 不创建
  10. 举例:
  11. 添加用户:`useradd -m ningshixian `
  12. 然后设置密码: `passwd ningshixian`
  1. 删除用户:
  1. userdel -r 用户名
  1. 修改帐号
  1. usermod 选项 用户名
  2. usermod -s /bin/ksh -d /home/z g developer sam
  1. 查看用户:
  1. cat /etc/passwd

Linux系统用户组的管理

  1. 增加一个新的用户组使用groupadd命令。 其格式如下:
  1. groupadd 选项 用户组
  1. 如果要删除一个已有的用户组,使用groupdel命令, 其格式如下:
  1. groupdel 用户组
  1. 修改用户所在组
  1. 强行设置某个用户所在组
  2. sermod -g 用户组 用户名

把某个用户改为 group(s) usermod -G 用户组 用户名```

把用户添加进入某个组(s),注意:原来的用户组还存在 usermod -a -G 用户组 用户名```

  1. 4. 查看 所有用户 所有用户组

groups 查看当前登录用户的组内成员

groups 52php 查看52php用户所在的组,以及组内成员

whoami 查看当前登录用户名

/etc/group 文件包含所有组

/etc/shadow 和 /etc/passwd 系统存在的所有用户名

  1. 5. 查看当前活跃的用户列表:`w`

cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F”:” ‘{ print $1”|”$3”|”$4 }’|more

  1. <a name="f12e68ca"></a>
  2. ### 权限分配
  3. 1. 用户/用户组管理

chown -R nsx:nsx /usr/hadoop/

  1. 2. 让普通用户拥有root的权限:
  2. [https://blog.csdn.net/lglglgl/article/details/46932001](https://blog.csdn.net/lglglgl/article/details/46932001)

以root身份登录,然后输入

usermod -g root ningshixian

执行完后username即归属于root组了,可以再输入

id ningshixian

查看输出验证一下,如果看到类似下面的输出:

uid=502(ningshixian) gid=0(root) groups=0(root)

就表示OK了

  1. <a name="9c2a9179"></a>
  2. ## 搜索命令
  3. - 寻找 ls 命令所在位置: `which ls`
  4. - 寻找特定档案:`locate passwd`
  5. - 寻找特定档案:`find`

用法: find [PATH] [option] [action]
find 支持正则匹配
-name 按照文件名查找文件。 -perm 按照文件权限来查找文件。 -user 按照文件属主来查找文件。 -group 按照文件所属的组来查找文件。 -mtime -n +n 按照文件的更改时间来查找文件 -type 查找某一类型的文件

实例:

find / -name .txt
find . -name
.pyc exec rm -rf {}\; 找出 pyc 文件并删除 find . -type d 查找目录

  1. <a name="50e3bcfa"></a>
  2. ## 文本操作
  3. - 全文查看 `cat/tac`<br />语法: `cat/tac filename`
  4. - 分页查看 `less/more`<br />语法: `less/more filename`
  5. - 头尾查看 `head/tail`<br />语法: `head filename`

常见用法: head -10 /etc/passwd 查看文件前 10 行 tail -5 /etc/passwd 查看文件后 5 行

  1. - 统计命令 `wc`

wc [-lwm] 选项: -l :仅列出行; -w :仅列出多少字(英文单字); -m :多少字符;

常见用法

wc /etc/passwd 50 94 2550 /etc/passwd 行数 单词数 字节数 wc -l /etc/passwd #统计行数很常用 wc -w /etc/passwd #统计单词出现次数 wc -m /etc/passwd #统计文件的字节数

  1. - 排序命令 `sort`

sort -bcfMnrtk[-o 输出文件』

常用 1 按文本排序 sort filename 2 按数字排序 sort -n 3 在输出内容中去除重复行 sort -u 4 反序
sort -r
5 指定列排序 sort -k 列号 -t 分隔符

  1. - 文本比较 `diff`

diff file1 file2 -i 忽略大小写 -w 忽略空白字符 -b 忽略空格数量的改变 -u 统一显示,比较信息,一般用于生成 patch 文件,在 svn 中版本控制很有用 diff -u file1 file2 > difference.patch

  1. - 查找命令——`grep [options]`

  主要参数   [options] 主要参数:   -c:只输出匹配行的计数。   -I:不区分大 小写(只适用于单字符)。   -h:查询多文件时不显示文件名。   -l:查询多文件时只输出包含匹配字符的文件名。   -n:显示匹配行及 行号。   -s:不显示不存在或无匹配文本的错误信息。   -v:显示不包含匹配文本的所有行。

常见使用:

1 grep root /etc/passwd 匹配文件中有 root 的行 2 grep ^root /etc/passwd 匹配文件中以 root 开头的行 3 grep -v root /etc/passwd 匹配文件中无 root 的行 4 grep -v ^$ test 过滤文件中的空行 5 cat xxx.txt | grep -n error

  1. - 替换 / 查找 / 删除命令——`sed`
  2. - 强大的文本分析命令——`awk`
  3. <a name="1b97cbd0"></a>
  4. ## 任务操作
  5. 定时任务: `contab`
  6. 任务调度 & / `nohup`, 将任务打入后台

python test.py&
nohup python test.py&

  1. <a name="4d85ac12"></a>
  2. ## 系统管理
  3. - 系统负载:`uptime`
  4. - 显示内存: `free [-b|k|m|g]`
  5. - 监控内存:`vmstat -t 间隔 -d 次数`<br />vmstat 是 Linux 中的常用工具,可对操作系统的虚拟内存、进程、CPU 等的整体情况进行监视。
  6. - 显示所有进程信息:ps

ps [option] -A :所有的进程均显示出来
-a :不与 terminal 有关的所有进程
-u :有效用户的相关进程
-x :一般与 a 连用 可列出较完整的信息
-l :以长列表形式显示 -o :自定义显示

常用:

ps -aux/-ef 显示所有进程信息 ps -ax -o pid,%cpu,%mem —sort=-%cpu,-%mem | head -10 显示 cpu 以及内存占用最高的 10 个进程

  1. - 性能分析:`top`<br />Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况<br />按进程的CPU使用率排序: 运行top命令后,键入大写P。<br />按进程的内存使用率排序: 运行top命令后,键入大写M。<br />**内容解释:**<br />第一行是任务队列信息

13:22:30 up8 min, 4 users, load average: 0.14, 0.38, 0.25 当前时间 系统运行时间 当前登录用户数 系统负载

  1. <br />第二是进程信息<br />第三行是CPU信息 <br />第四五行为内存信息 <br />进程信息
  2. - 系统活动情况报告:`sar`<br />Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘 I/O、CPU 效率、内存使用状况、进程活动及 IPC 有关的活
  3. <a name="bfb94867"></a>
  4. ## 网络相关
  5. - 查看设置网卡参数:`ifconfig`

命令格式: ifconfig 『网络设备』 『参数』 常用 ifconfig eth0 up/down 启用或关闭指定网卡 ifconfig eth0 显示网卡信息

  1. - 测试网络连通性:`ping`

ping 『参数』 『主机名或 IP 地址』 参数: -d 使用 Socket 的 SO_DEBUG 功能。 -f 极限检测。大量且快速地送网络封包给一台机器,看它的回应。 -n 只输出数值。 -q 不显示任何传送封包的信息,只显示最后的结果。 -r 忽略普通的 Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。 -R 记录路由过程。 -v 详细显示指令的执行过程。

常用

ping www.163.com ping -R www.163.com

  1. - 查看网络状态:`netstat`

netstat [option] 参数:
-a: 显示所有 -n: 以 ip 形式显示 -p: 显示进程 -r: 显示路由表 -t: 只显示 tcp -u: 只显示 udp -i: 显示网络接口

常用:

1 netstat 2 netstat -nu 只显示 udp / -t 只显示 tcp 3 netstat -r 显示路由表,作用同 route

查看 Linux 下一些端口是否打开的命令 netstat -an|grep: 端口号

  1. - 查看网络状态:`ss`

ss -s 我想查看当前服务器的网络连接统计 ss -l 我想查看所有打开的网络端口 ss -a 查看这台服务器上所有的 socket 连接

  1. - 查看设置网卡参数:`ip`
  2. - 查看路由以及添加路由:`route`

route [option] [action] 参数: -n 不解析名字 -v 显示详细的处理信息 -f 清除所有网关入口的路由表。 -p 与 add 命令一起使用时使路由具有永久性。 add: 添加一条新路由。 del: 删除一条路由。 -net: 目标地址是一个网络。 -host: 目标地址是一个主机。

常用

route -n 显示路由表 route add/del default gw 192.168.120.1 删除和添加设置默认网关 route add -net 172.25.0.0 netmask 255.255.0.0 dev eth0 添加网关

  1. - 查看路由轨迹:`traceroute`<br />`traceroute`追踪网络数据包的路由途径

traceroute参数 参数: -I 使用 ICMP 回应取代 UDP 资料信息。 -d 使用 Socket 层级的排错功能。 -s 设置本地主机送出数据包的 IP 地址。 -n 只显示 IP

常用

traceroute www.163.com traceroute -n www.163.com 显示 IP 地址,不查主机名

  1. <a name="d81225de"></a>
  2. ## 远程登录服务器

ssh user@localhost

  1. <a name="16a9e1a1"></a>
  2. ## 远程拷贝文件
  3. 用于在 Linux 下进行远程拷贝文件的命令 `scp`
  4. 上传本地文件到远程机器指定目录

scp ~/test/a.out pi@192.168.1.178:/home/pi

  1. <a name="1659f2ed"></a>
  2. ## 解压 tar 文件
  3. `tar xvf archive_name.tar`
  4. <a name="a6d428cc"></a>
  5. # 常用问题排查命令
  6. - 释放当前被占用端口
  1. netstat -tln 查看系统当前所有被占用端口;
  2. lsof -i :9001 看到当前被占用的端口的进程
  3. ps id
  4. kill -9 id 杀掉进程 ```
  • 根据名称查找进程 id
  1. ps -ef | grep Name
  • 查看某一端口被哪个进程占用 (3 种方式)
  1. netstat -anl | grep "端口号"

netstat -tunpl | grep 端口号 ```

lsof -i: 端口号

  1. - 通过 PID 查看进程完整信息 `ll /proc/PID`

解释

  1. cwd 符号链接的是进程运行目录;
  2. exe 符号连接就是执行程序的绝对路径;
  3. cmdline 就是程序运行时输入的命令行命令;
  4. environ 记录了进程运行时的环境变量; ```
  • du: 显示指定的目录或文件所占用的磁盘空间
  1. df -h 统计整体磁盘情况
  2. du -bsh /usr/ 查看指定目录磁盘占用情况
  3. du -sh 查看当前目录总共占的容量
  4. du -ah --max-depth=1 / 查看根目录每个文件夹的占用情况

参考

《Linux 新建用户、用户组,给用户分配权限(chown、useradd、groupadd、userdel、usermod、passwd、groupdel)》