linux的常用命令

linux 的一些常用命令

  • 文件目录操作

  • 日常开关机

  • 用户管理

  • 搜索命令

  • 文本内容搜索

  • 任务操作

  • 系统管理

  • 网络相关

  • ssh远程登录服务器

  • scp远程拷贝文件

  • 解压tar文件

  • 其他应用

文件目录操作

  • 文件浏览
1
cat, more, less, head, tail
  • ls 显示文件 / 目录属性
1
2
3
4
5
6
7
8
常见参数:
-l :列出长数据串,包含文件的属性与权限数据等
-a :列出全部的文件,连同隐藏文件(开头为。的文件)一起列出来(常用)
-d :仅列出目录本身,而不是列出目录的文件数据
-h :将文件容量以较易读的方式(GB,kB 等)列出来
-R :连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来

示例: ls -l /tmp
  • pwd 显示当前路径

  • mkdir 创建目录

1
2
mkdir  newdir
mkdir -p newdir/newdir #递归创建目录
  • touch 创建文件

  • mv 移动文件 / 重命名

1
2
mv filename dirname  移动文件
mv oldfilename newfilename 对文件重命名
  • rm 删除文件
1
2
3
-i: 交互式
-r: 递归
-f: 强制
  • ln 创建链接
1
2
ln /etc/passwd passwd  创建硬链接
ln -s 创建软链接
  • chmod 更改文件权限
1
2
r=4,w=2,x=1
chmod xxx filename

日常开关机

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

用户管理

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

  • 用户账号的添加、删除与修改

  • 用户密码的管理

  • 用户组的管理

Linux系统用户账号的管理

  1. 添加新的用户账号使用 useradd 命令,其语法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
useradd [-u|-g|-m|-d|-s] username

其中各选项含义如下:

-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
-m/M:创建家目录 /M 不创建

举例:
添加用户:`useradd -m ningshixian `
然后设置密码: `passwd ningshixian`
  1. 删除用户:
1
userdel  -r  用户名
  1. 修改帐号
1
2
usermod 选项 用户名
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
3
4
5
6
7
8
强行设置某个用户所在组
sermod -g 用户组 用户名```

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

把用户添加进入某个组(s),注意:原来的用户组还存在
usermod -a -G 用户组 用户名```
  1. 查看 所有用户 及 所有用户组
1
2
3
4
5
6
7
8
9
`groups` 查看当前登录用户的组内成员

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

`whoami` 查看当前登录用户名

/etc/group 文件包含所有组

/etc/shadow 和 /etc/passwd 系统存在的所有用户名
  1. 查看当前活跃的用户列表:w
1
cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more

权限分配

  1. 用户/用户组管理
1
chown -R nsx:nsx /usr/hadoop/
  1. 让普通用户拥有root的权限:

https://blog.csdn.net/lglglgl/article/details/46932001

1
2
3
4
5
6
7
8
9
10
11
12
13
以root身份登录,然后输入

`usermod -g root ningshixian`

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

`id ningshixian`

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

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

就表示OK了

搜索命令

  • 寻找 ls 命令所在位置: which ls

  • 寻找特定档案:locate passwd

  • 寻找特定档案:find

1
2
3
4
5
6
7
8
9
10
11
12
13
14
用法: 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 查找目录

文本操作

  • 全文查看 cat/tac
    语法: cat/tac filename

  • 分页查看 less/more
    语法: less/more filename

  • 头尾查看 head/tail
    语法: head filename

1
2
3
常见用法:
head -10 /etc/passwd 查看文件前 10 行
tail -5 /etc/passwd 查看文件后 5 行
  • 统计命令 wc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 #统计文件的字节数
  • 排序命令 sort
1
2
3
4
5
6
7
8
9
10
11
12
13
sort [-bcfMnrtk](源文件)[-o 输出文件』

常用
1 按文本排序
sort filename
2 按数字排序
sort -n
3 在输出内容中去除重复行
sort -u
4 反序
sort -r
5 指定列排序
sort -k 列号 -t 分隔符
  • 文本比较 diff
1
2
3
4
5
6
diff file1 file2
-i 忽略大小写
-w 忽略空白字符
-b 忽略空格数量的改变
-u 统一显示,比较信息,一般用于生成 patch 文件,在 svn 中版本控制很有用
diff -u file1 file2 > difference.patch
  • 查找命令——grep [options]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  主要参数
  [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
  • 替换 / 查找 / 删除命令——sed

  • 强大的文本分析命令——awk

任务操作

定时任务: contab

任务调度 & / nohup, 将任务打入后台

1
2
python test.py&  
nohup python test.py&

系统管理

  • 系统负载:uptime

  • 显示内存: free [-b|k|m|g]

  • 监控内存:vmstat -t 间隔 -d 次数
    vmstat 是 Linux 中的常用工具,可对操作系统的虚拟内存、进程、CPU 等的整体情况进行监视。

  • 显示所有进程信息:ps

1
2
3
4
5
6
7
8
9
10
11
12
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 个进程
  • 性能分析:top
    Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况
    按进程的CPU使用率排序: 运行top命令后,键入大写P。
    按进程的内存使用率排序: 运行top命令后,键入大写M。
    内容解释:
    第一行是任务队列信息
1
2
13:22:30 up8 min,  4 users,  load average: 0.14, 0.38, 0.25
当前时间 系统运行时间 当前登录用户数 系统负载

第二是进程信息
第三行是CPU信息
第四五行为内存信息
进程信息

  • 系统活动情况报告:sar
    Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘 I/O、CPU 效率、内存使用状况、进程活动及 IPC 有关的活

网络相关

  • 查看设置网卡参数:ifconfig
1
2
3
4
5
命令格式:
ifconfig 『网络设备』 『参数』
常用
ifconfig eth0 up/down 启用或关闭指定网卡
ifconfig eth0 显示网卡信息
  • 测试网络连通性:ping
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ping 『参数』 『主机名或 IP 地址』
参数:
-d 使用 Socket 的 SO_DEBUG 功能。
-f 极限检测。大量且快速地送网络封包给一台机器,看它的回应。
-n 只输出数值。
-q 不显示任何传送封包的信息,只显示最后的结果。
-r 忽略普通的 Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。
-R 记录路由过程。
-v 详细显示指令的执行过程。

常用

ping www.163.com
ping -R www.163.com
  • 查看网络状态:netstat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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: 端口号
  • 查看网络状态:ss
1
2
3
ss  -s  我想查看当前服务器的网络连接统计
ss -l 我想查看所有打开的网络端口
ss -a 查看这台服务器上所有的 socket 连接
  • 查看设置网卡参数:ip

  • 查看路由以及添加路由:route

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 添加网关
  • 查看路由轨迹:traceroute
    traceroute追踪网络数据包的路由途径
1
2
3
4
5
6
7
8
9
10
11
traceroute[参数](主机)
参数:
-I 使用 ICMP 回应取代 UDP 资料信息。
-d 使用 Socket 层级的排错功能。
-s 设置本地主机送出数据包的 IP 地址。
-n 只显示 IP

常用

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

远程登录服务器

1
ssh user@localhost

远程拷贝文件

用于在 Linux 下进行远程拷贝文件的命令 scp

上传本地文件到远程机器指定目录

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

解压 tar 文件

1
tar xvf archive_name.tar

常用问题排查命令

  • 释放当前被占用端口
1
2
3
4
1.  ``` netstat -tln ```  查看系统当前所有被占用端口;
2. ``` lsof -i :9001 ``` 看到当前被占用的端口的进程
3. ``` ps id ```
4. ``` kill -9 id ``` 杀掉进程
  • 根据名称查找进程 id
1
ps -ef | grep Name
  • 查看某一端口被哪个进程占用 (3 种方式)
1
2
3
4
5
netstat -anl | grep "端口号"  ``` 

netstat -tunpl | grep 端口号 ```

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

参考

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


linux的常用命令
http://example.com/2019/08/11/2019-08-11-linux的常用命令/
作者
NSX
发布于
2019年8月11日
许可协议