linux高级命令
Posted moyue..
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux高级命令相关的知识,希望对你有一定的参考价值。
vim进入文件命令和vi功能相同
vim需要下载
[root@moyue01 ~]# yum install -y vim
[root@moyue01 ~]# echo "zhangsan" >> a.txt
[root@moyue01 ~]# vim a.txt
zhangsan
~
~
一般模式(进入文件之后为一般模式)
功能
[root@moyue01 data]# ll
总用量 4
-rw-r--r--. 1 root root 2274 11月 30 17:27 profile
[root@moyue01 data]# vim profile
进入之后为一般模式
可以使用下面的快捷键
H:到当前页面的第一行的开头
M:到当前页面的中间行的开头
L:到当前页面的最后一行的开头
gg:回到文件的第一行
G:移动到文件的最后一行
nG:移动到文件的第n行 #按5之后按G可以到文件的第五行
x:删除光标后的一个字符
X:删除光标前的一个字符
nx|X:删除光标后的n个字符|删除光标前的n个字符 按5之后按x表示删除光标后5个字符,X类似
dd:删除所在行
ndd:向下删除n行
dnG:删除所在行的n行数据
dG:删除所在行到最后一行的所有数据
yy|Y:复制所在行的所有数据
nyy|nY:复制向下n行的数据
p:将数据复制到光标所在的下一行
P:将数据复制到光标所在的上一行
u:撤销一步
插入模式
a,A,o,O,i,I都可以进入到插入模式
a:在光标后插入
A:在行尾插入
o:在光标的下一行插入
O:在光标的上一行插入
i:在光标处插入
I:在行首插入
底行命令
:q退出不保存
:q!强制退出不保存
:qw保存退出
:qw!强制保存退出
:set nu显示行号
:set nonu取消行号
防火墙
[root@moyue01 data]# systemctl status firewalld #查看防火墙状态
● firewalld.service - firewalld - dynamic firewall daemon
[root@moyue01 data]# systemctl start firewalld #打开防火墙
[root@moyue01 data]# systemctl stop firewalld #关闭防火墙
[root@moyue01 data]# systemctl enable firewalld #开启时自动打开防火墙
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
[root@moyue01 data]# systemctl disabled firewalld #开机不自动开启防火墙
Unknown operation 'disabled'.
查找netstat
需要下载
[root@moyue01 data]# yum install -y net-tools
-a #显示所有端口
[root@moyue01 data]# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
-----------------------------------------------------------------------------
-t #查看与tcp相关选项、
[root@moyue01 data]# netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 52 moyue01:ssh 192.168.10.1:58631 ESTABLISHED
-----------------------------------------------------------------------------
-u #仅显示udp相关
[root@moyue01 data]# netstat -u
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
-----------------------------------------------------------------------------
-n #数字方式显示端口
[root@moyue01 data]# netstat -n
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 52 192.168.10.110:22 192.168.10.1:58631 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
-----------------------------------------------------------------------------
-p显示socket的PID和进程名
[root@moyue01 data]# netstat -p
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 52 moyue01:ssh 192.168.10.1:58631 ESTABLISHED 2811/sshd: root@pts
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
-----------------------------------------------------------------------------
-l显示控制台的socket
[root@moyue01 data]# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp6 0 0 localhost:smtp [::]:* LISTEN
tcp6 0 0 [::]:mysql [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
raw6 0 0 [::]:ipv6-icmp [::]:* 7
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
修改主机名
查看主机名
[root@moyue01 data]# hostname
moyue01
修改主机名
[root@moyue01 data]# echo "moyue01" > /etc/hostname
映射修改
[root@moyue01 data]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.110 moyue01
192.168.10.111 moyue02
192.168.10.112 moyue03
进程管理命令-ps
ps#查看相同的进程信息
a:显示所有用户的进程信息
[root@moyue01 data]# ps -a
PID TTY TIME CMD
2887 pts/3 00:00:17 top
72260 pts/2 00:00:00 ps
--------------------------------------------------------------------------
u:显示用户的启动时间
[root@moyue01 data]# ps -u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 813 0.0 0.0 110108 856 tty1 Ss+ 10:05 0:00 /sbin/agetty --noclear tty1 linux
root 2815 0.0 0.0 115748 2276 pts/2 Ss 13:57 0:00 -bash
root 2830 0.0 0.0 115448 1992 pts/3 Ss 13:57 0:00 -bash
root 2887 0.0 0.0 162732 3000 pts/3 S+ 13:57 0:17 top
root 73074 0.0 0.0 155372 1864 pts/2 R+ 19:34 0:00 ps -u
--------------------------------------------------------------------------
x:显示没有控制终端的进程
[root@moyue01 data]# ps -x
PID TTY STAT TIME COMMAND
1 ? Ss 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
2 ? S 0:00 [kthreadd]
4 ? S< 0:00 [kworker/0:0H]
6 ? S 0:05 [ksoftirqd/0]
--------------------------------------------------------------------------
e:显示所有进程包括没有控制终端的进程
[root@moyue01 data]# ps -e
PID TTY TIME CMD
1 ? 00:00:01 systemd
2 ? 00:00:00 kthreadd
4 ? 00:00:00 kworker/0:0H
6 ? 00:00:05 ksoftirqd/0
7 ? 00:00:03 migration/0
---------------------------------------------------------------------------
l:长格式显示
[root@moyue01 data]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 2815 2811 0 80 0 - 28937 do_wai pts/2 00:00:00 bash
0 R 0 75646 2815 0 80 0 - 38312 - pts/2 00:00:00 ps
进程管理命令-pstree
树状查看
-p #显示进程PID
[root@moyue01 data]# pstree -p
systemd(1)─┬─NetworkManager(795)─┬─NetworkManager(814)
│ └─NetworkManager(816)
├─agetty(813)
├─auditd(766)───auditd(767)
├─crond(807)
├─dbus-daemon(789)───dbus-daemon(790)
├─irqbalance(797)
├─lvmetad(577)
├─master(1286)─┬─pickup(73592)
│ └─qmgr(1293)
├─mysqld(1099)─┬─mysqld(1186)
│ ├─mysqld(1189)
│ ├─mysqld(1190)
│ ├─mysqld(1191)
│ ├─mysqld(1192)
│ ├─mysqld(1193)
│ ├─mysqld(1194)
│ ├─mysqld(1195)
│ ├─mysqld(1196)
│ ├─mysqld(1197)
│ ├─mysqld(1198)
│ ├─mysqld(1199)
│ ├─mysqld(1215)
│ ├─mysqld(1216)
│ ├─mysqld(1217)
│ ├─mysqld(1218)
│ ├─mysqld(1219)
│ ├─mysqld(1220)
│ ├─mysqld(1221)
│ ├─mysqld(1224)
│ ├─mysqld(1248)
│ ├─mysqld(1249)
│ ├─mysqld(1250)
│ ├─mysqld(1251)
│ ├─mysqld(1267)
│ └─mysqld(1270)
├─polkitd(788)─┬─polkitd(791)
│ ├─polkitd(793)
│ ├─polkitd(796)
│ ├─polkitd(799)
│ ├─polkitd(801)
│ └─polkitd(803)
├─rsyslogd(1024)─┬─rsyslogd(1049)
│ └─rsyslogd(1055)
├─sshd(1023)───sshd(2811)─┬─bash(2815)───pstree(80668)
│ ├─bash(2830)───top(2887)
│ └─bash(80658)───sleep(80667)
├─systemd-journal(558)
├─systemd-logind(800)
├─systemd-udevd(585)
└─tuned(1021)─┬─tuned(1493)
├─tuned(1494)
├─tuned(1496)
└─tuned(1498)
-u:显示进所属用户
[root@moyue01 data]# pstree -u
systemd─┬─NetworkManager───2*[NetworkManager]
├─agetty
├─auditd───auditd
├─crond
├─dbus-daemon(dbus)───dbus-daemon
├─irqbalance
├─lvmetad
├─master─┬─pickup(postfix)
│ └─qmgr(postfix)
├─mysqld(mysql)───26*[mysqld]
├─polkitd(polkitd)───6*[polkitd]
├─rsyslogd───2*[rsyslogd]
├─sshd───sshd─┬─bash───pstree
│ ├─bash───top
│ └─bash───sleep
├─systemd-journal
├─systemd-logind
├─systemd-udevd
└─tuned───4*[tuned]
进程管理命令-kill
-9
kill -9 pid ......
[root@moyue01 ~]# ps -aux|grep ping #有两个ping进程
root 84261 0.0 0.0 149988 1996 pts/2 S+ 19:43 0:00 ping www.baidu.com
root 84911 0.0 0.0 149988 2000 pts/0 S+ 19:44 0:00 ping www.taobao.com
root 85815 0.0 0.0 112728 972 pts/4 S+ 19:44 0:00 grep --color=auto ping
[root@moyue01 ~]# kill -9 84261 84911
64 bytes from 14.215.57.232 (14.215.57.232): icmp_seq=59 ttl=128 time=7.76 ms
已杀死
进程管理命令-nohup
前台进程转后台进程
[root@moyue01 ~]# nohup ping www.baidu.com &
nohup: 忽略输入并把输出追加到"nohup.out"
用户和用户组
创建新用户
useradd需要属性
-c 指定一段注释性的描述
-d 指定用户目录 #-m可以默认创建
-g 用户组 指定用户所属的用户组
-G 用户组 指定用户所属的附加组
-s shell文件指定用户的登陆shell
-u 用户的id号 指定用户的uid
[root@moyue01 ~]# useradd -d /home/moyue1 -c 'this is a user' -g 0 -G 1 -u 101 -s /bin/bash moyue1
[root@moyue01 home]# ll
总用量 0
drwx------. 2 moyue root 62 11月 30 20:03 moyue
drwx------. 2 moyue1 root 62 11月 30 20:05 moyue1
drwx------. 2 1000 1000 62 11月 30 16:34 xiaoc
使用-m替换-d
[root@moyue01 home]# useradd -m -c 'this is a user' -g 0 -G 1 -u 102 -s /bin/bash moyue2
-d可以不指定
---------------------------------------------------------------------------------
passwd设置密码
[root@moyue01 home]# passwd moyue2
更改用户 moyue2 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
---------------------------------------------------------------------------------
-S:显示账号密码信息
[root@moyue01 home]# passwd -S moyue2
moyue2 PS 2021-11-30 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
---------------------------------------------------------------------------------
-l:锁定口令
[root@moyue01 home]# passwd -l moyue2
锁定用户 moyue2 的密码 。
passwd: 操作成功
---------------------------------------------------------------------------------
-u:解锁
[root@moyue01 home]# passwd -u moyue2
解锁用户 moyue2 的密码。
passwd: 操作成功
---------------------------------------------------------------------------------
-d:使账号无口令
[root@moyue01 home]# passwd -d moyue2
清除用户的密码 moyue2。
passwd: 操作成功
---------------------------------------------------------------------------------
-f:更改密码
[root@moyue01 home]# passwd -f moyue2
更改用户 moyue2 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
su切换用户
su切换到普通用户
[root@moyue01 home]# su moyue2
[moyue2@moyue01 home]$
su切换到root用户
[moyue2@moyue01 home]$ su
密码:
[root@moyue01 home]#
----------------------------------------------------------------------------------
[moyue2@moyue01 home]$ su root
密码:
[root@moyue01 home]#
usermod修改用户信息
和useradd一样有
-c
-d
-m
-g
-G
-s
-u
修改用户名
[root@moyue01 home]# usermod -l xiaoh -d /home/xiaoh -m moyue
[root@moyue01 home]# usermod -s /bin/ksh -d /home/ls -g adm xiaoh
修改xiaoh的shell为ksh,主目录改为/home/ls,用户组改为adm
userdel删除
userdel -r 用户名
[root@moyue01 home]# userdel -r moyue2
如果没有加上-r那么家目录没有删除
要重新创建相同的用户然后删除
例:
[root@moyue01 ~]# useradd -g 0 -u 100 xiaoh
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
[root@moyue01 ~]# useradd -g 0 -u 100 xiaoh
useradd:用户“xiaoh”已存在
[root@moyue01 ~]# userdel -r xiaoh
[root@moyue01 ~]# cd /home
分组管理
groupadd
-g 指定新用户的组标识符
-o 指定和-g同时使用表示新用户的gid可以和系统分gid相同
创建一个新组
[root@moyue01 home]# groupadd a
创建一个新组标识符为600
[root@moyue01 home]# groupadd -g 600 b
groupmod
直接修改
[root@moyue01 home]# groupmod -g 601 b
修改名字
[root@moyue01 home]# groupmod -g 600 -n c a
将a的标识改为600重命名为c
groupdel
groupdel 组名
[root@moyue01 home]# groupdel c
删除c组
文件权限
r:读权限
w:写权限
x:执行权限
例如
-rw-r--r--. 1 root root 2280 11月 30 19:10 !
- rw- r-- r-- .1
-表示类型为普通文件 d表示目录 l表示链接文件
rw-表示用户权限只有读写权限
r--表示组权限
r--表示其他用户权限
最后的1表示硬连接数
权限更改
chmod修改权限
参数
+:添加某个权限
-:清除某个权限
=:重新赋值权限
u:表示拥有者的权限
g:组的权限#即组成员拥有权限
o:表示其他用户权限
a:表示所有
例如:方法一:
drwxr-xr-x. 2 root root 6 12月 1 13:07 dir
-rw-r--r--. 1 root root 0 12月 1 13:07 file
[root@moyue01 data]# chmod u-r dir #清除用户的读权限
d-wxr-xr-x. 2 root root 6 12月 1 13:07 dir
[root@moyue01 data]# chmod g-r dir #清除组的读权限
d-wx--xr-x. 2 root root 6 12月 1 13:07 dir
[root@moyue01 data]# chmod o-r dir #清除其他用户的读权限
d-wxr-x---. 2 root root 6 12月 1 13:07 dir
[root@moyue01 data]# chmod a+r dir #添加所有用户的读权限
drwxr-xr--. 2 root root 6 12月 1 13:07 dir
方法二:
r-4
w-2
x-1
例如
-rw-r--r--. 1 root root 0 12月 2 20:48 a
[root@moyue01 ~]# chmod 555 a.txt
-r-xr-xr-x. 1 root root 0 12月 2 20:48 a
5:1+4
表示拥有读权限和执行权限
chgrp
更改组只能root用户使用
查看有哪些组
[root@moyue01 ~]# cat /etc/group
root:x:0:
bin:x:1:moyue2
daemon:x:2:
sys:x:3:
adm:x:4:
[root@moyue01 ~]# chgrp bin a
-r-xr-xr-x. 1 root bin 0 12月 2 20:48 a
想要修改目录想要-R
[root@moyue01 ~]# mkdir b
drwxr-xr-x. 2 root root 6 12月 3 16:20 b
[root@moyue01 ~]# chgrp -R bin b
drwxr-xr-x. 2 root bin 6 12月 3 16:20 b
chown
chown
修改拥有者只能是root用户才有权限
[root@moyue01 data]# ll
-rw-r--r--. 1 root root 0 12月 1 13:07 file
[root@moyue01 data]# cat /etc/passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
找一个用户进行替换
[root@moyue01 data]# chown daemon file
[root@moyue01 data]# ll
-rw-r--r--. 1 daemon root 0 12月 1 13:07 file
chown还有chgrp的功能
例如
[root@moyue01 data]# chown adm:adm file
-rw-r--r--. 1 adm adm 0 12月 1 13:07 file
:前后不能有空格
[root@moyue01 data]# chown :lp file
-rw-r--r--. 1 adm lp 0 12月 1 13:07 file
以上是关于linux高级命令的主要内容,如果未能解决你的问题,请参考以下文章
markdown [Docker] Docker片段列表和命令#linux #docker #snippets
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段
Vue3官网-高级指南(十七)响应式计算`computed`和侦听`watchEffect`(onTrackonTriggeronInvalidate副作用的刷新时机`watch` pre)(代码片段