首页 > 技术文章 > Ubuntu常用指令

Mystogan 2021-09-27 09:36 原文

一、用户管理

命令格式

提示符 命令 选项 参数

提示符:分为$、# ,进入命令行界面会自动显示

$表示当前用户为一般用户

#表示当前用户为管理员用户

用户和用户组的概念

链接:https://www.jianshu.com/p/2856910868bd/

Linux操作系统是一个多用户、多任务的操作系统,可以同时允许多用户登录并使用,为解决多用户之间的权限问题,Linux操作系统提供了完善的用户及用户组管理功能。

每个用户都需要有自己的“隐私空间”,未经允许其他用户不能访问或修改文件内容。而对于一个团队来说,许多文件或目录是共享在“公共空间”的,用户属于该团队时,就可以访问共享的文件,而不在该团队的用户,则不可以访问,因此产生了用户组。

Linux操作系统中,可以包含多个用户组,比如用户组1和用户组2;每个用户组可以包含多个用户,比如用户组1包含有用户A和用户B;每个用户可以属于多个用户组,比如用户A可以同时属于用户组1和用户组2。

通常用户与用户、用户组与用户组之间未经允许并不能访问或修改其他人的文件或目录,但是root用户作为Linux操作系统的终极管理员,可以查看并修改任何用户、用户组的文件内容,所以在使用root账户时需要特别小心,尤其要防止误删系统文件,造成系统崩溃。

用户标识符

当登录Linux操作系统时,需要输入用户名和密码,账号名称是在创建用户时指定的一串英文字符,以方便用户记忆。而在Linux操作系统中,会给该账号分配一个唯一的数字ID进行存储。该ID号和账号名称是一一对应的,该ID号被称为UID(UserID)。类似的每个用户组也都有属于自己的用户组ID,称为GID(GroupID)。账号和ID对应的关系存储在“/etc/passwd”和“/etc/group”两个文件中。可以通过查看这两个文件来确定用户的ID号,如下所示。

cat /etc/group

cat /etc/passwd

这两个命令查看的时候一直会用到。

查看用户

查看所有用户,需要查看/etc/passwd文件

cat /etc/passwd

每行对应一个用户,各列分别为

username:password(masked):userId;groupId:comment:homeDir:shell

例如da_kao_la❌1042:1042:,,,:/home/da_kao_la:/bin/bash

其中密码一般用x*表示

查看当前用户

whoami 看用户名

who 查看登录用户

exit 退出当前用户,切换到原来的用户

查看用户

https://www.jianshu.com/p/57929dd0263c

用户切换

https://www.jb51.net/article/109471.htm

(1)从user用户切换到root用户

但是当我们需要执行一些具有root权限的操作(如修还系统文件)时,经常需要用sudo授权,感觉很麻烦。此时我们可以切换到root用户,只需要简单的执行sudo su 即可

注意: 出于安全考虑,默认时Ubuntu的root用户时没有固定密码的,它的密码是随机产生并且动态改变的,貌似是每5分钟改变一次,所以用su(switch user)是不可以的,因为我们不知道root的密码

(2)从root用户切回user用户

想从root用户切回user用户只需执行命令:su 用户名 (user是你自己安装时候的用户名),或是直接输入exit,也可Ctrl+D组合键推出

sudo su - stack

管理用户

https://jingyan.baidu.com/article/7e4409537a34c42fc0e2ef26.html

ubuntu下useradd与adduser区别

1、useradd username不会在/home下建立一个文件夹username

  (1)会在/etc/passwd下面添加注册的账户:

  (2)会在/etc/shadow 文件下建立注册用户的密码:

  (3)不会在/home下建立一个文件夹username:

useradd -m username跟adduser一样,可以建立一个文件夹username,但是没有设置密码

2、adduser username

  (1)会在/etc/passwd下面添加注册的账户:

  (2)会在/etc/shadow 文件下建立注册用户的密码:

  (3)会在/home下建立一个文件夹username

创建用户

sudo adduser username 等同于

sudo useradd 用户名 -m

-m代表创建用户的同时创建该用户的home目录

创建用户时候,会自动创建该用户所在组,默认组名和用户名一样。

创建组

sudo addgroup xxx 创建一个xxx组;好像sudo groupadd xxx也是可以的,没像user一样的问题

groupmod 查看所有的组

sudo groupdel xxx 删除xxx组

usermod -G group_name user_name 添加用户到某一个组,这个命令可以添加一个用户到指定的组,但是以前添加的组就会清空掉。

gpasswd -a user_name group_name 所以想要添加一个用户到一个组,同时保留以前添加的组时,请使用 gpasswd 这个命令来添加操作用户

默认新建的用户没有sudo权限,要赋给sudo权限要在有sudo权限的用户使用以下命令,这两句是将newuser用户添加到adm组和sudo组:

sudo usermod -a -G adm newuser

sudo usermod -a -G sudo newuser

之前创建hadoop是这样:sudo usermod -aG admin hadoop试着理解下

删除用户

删除用户 sudo userdel username

userdel xxx 删除xxx用户,但不删除主目录

userdel -r xxx 删除xxx用户,删除主目录

设置密码

sudo passwd xxx 设置xxx用户的密码

Passwd 用户名 #为用户创建密码

Passwd -d用户名 #删除用户密码也能登陆

Passwd -S用户名 #查询账号密码

更改名字

Usermod -l 新用户名 老用户名 #为用户改名

Userdel–r 用户名 #删除用户一切

修改用户名

我们使用 usermod 来修改用户名。其语法为,

$ usermod -l new_username old_username

举个例子,假设我们有一个名叫 dan 的用户想要重命名为 susan,那么在终端下执行下面命令:

$ sudo usermod -l susan dan

这只会更改用户名,而其他的东西,比如用户组,home目录,UID 等都保持不变。

注意:- 你需要从要改名的帐号中登出并杀掉该用户的所有进程,要杀掉该用户的所有进程可以执行下面命令,

$ sudo pkill -u dan

$ sudo pkill -9 -u dan

修改home目录

要同时更改Home目录,我们需要在执行 usermod 命令的同时加上 -d 选项,

$ sudo usermod -d /home/susan -m susan

更改用户 UID

执行下面命令修改用户 UID,

$ sudo usermod -u 2000 susan

这里 2000 就是用户的新 UID。

修改用户组名

要把用户组名从 dan 修改为 susan,我们需要使用 groupmod 命令。使用下面命令来修改用户组名,

$ groupmod -n susan dan

做完修改后,可以使用 id 命令来检查

$ id susan

二、系统管理

查看内核#uname -a

查看Ubuntu版本

cat /etc/issue

lsb_release -a

查看内核加载的模块#lsmod

查看PCI设备#lspci

查看USB设备#lsusb

查看网卡状态#sudo ethtool eth0

查看CPU信息#cat /proc/cpuinfo

显示当前硬件信息#lshw

三、文件/文件夹管理

ls 列出当前目录文件(不包括隐含文件)

ls -a 列出当前目录文件(包括隐含文件)

ls -l 列出当前目录下文件的详细信息

cd .. 回当前目录的上一级目录

cd - 回上一次所在的目录

cd ~ 或 cd 回当前用户的宿主目录

mkdir 目录名 创建一个目录

rmdir 空目录名 删除一个空目录

rm 文件名 文件名 删除一个文件或多个文件

rm -rf 非空目录名 删除一个非空目录下的一切

mv 路经/文件 /经/文件移动相对路经下的文件到绝对路经下

mv 文件名 新名称 在当前目录下改名

find 路经 -name “字符串” 查找路经所在范围内满足字符串匹配的文件和目录 pwd #当前路径 rm[文件名] #删除指定文件-f强制删除,-r删除文件夹及其内容 mkdir[目录名] #创建文件夹 touch[文件名] #文件不存在的话创建文件 cp[源文件路径] [目标路径] #复制 move[源文件路径] [目标路径] #移动 echo[文字内容] #echo会在终端显示参数指定的文字,通常会和重定向联合使用

四、安装和更新指令

sudo apt-get update 更新源

sudo apt-get dist-upgrade 升级系统

sudo apt-get check 检查是否有损坏的依赖

sudo apt-get upgrade 更新已安装的包

sudo apt-get -f install 修复安装

sudo apt-get install <*> 安装包

sudo dpkg -i <*.deb> 安装deb包

sudo sh <*.sh> 安装.sh文件

sudo apt-get install --reinstall 重新安装包

dpkg --get-selections |grep <*> 获取软件信息

sudo apt-get purge <*> 卸载软件(将上面一条指令获取的信息以空格隔开即可)

sudo apt-get clean && sudo apt-get autoclean 清理无用的包

sudo apt-get remove 删除包

sudo apt-get remove --purge 删除包,包括配置文件等

apt-cache search package #搜索包

apt-cache show package #获取包的相关信息,如说明、大小、版本等

sudo apt-get install package #安装包

sudo apt-get install package - - reinstall #重新安装包

sudo apt-get -f install #修复安装”-f = –fix-missing”

sudo apt-get remove package #删除包

sudo apt-get remove package - - purge #删除包,包括删除配置文件等

sudo apt-get update #更新源

sudo apt-get upgrade #更新已安装的包

sudo apt-get dist-upgrade #升级系统

sudo apt-get dselect-upgrade #使用 dselect 升级

apt-cache depends package #了解使用依赖

apt-cache rdepends package #是查看该包被哪些包依赖

sudo apt-get build-dep package #安装相关的编译环境

apt-get source package #下载该包的源代码

sudo apt-get clean && sudo apt-get autoclean #清理无用的包

sudo apt-get check #检查是否有损坏的依赖

sudo apt-get clean #清理所有软件缓存(即缓存在/var/cache/apt/archives目录里的deb包)

五、打包/解压

tar -c 创建包 –x 释放包 -v 显示命令过程 –z 代表压缩包

tar –cvf benet.tar /home/benet 把/home/benet目录打包

tar –zcvf benet.tar.gz /mnt 把目录打包并压缩

tar –zxvf benet.tar.gz 压缩包的文件解压恢复

tar –jxvf benet.tar.bz2 解压缩

.tar 文件

# 仅打包,并非压缩

tar -xvf FileName.tar # 解包

tar -cvf FileName.tar DirName # 将DirName和其下所有文件(夹)打包

.gz文件

# .gz

gunzip FileName.gz # 解压1

gzip -d FileName.gz # 解压2

gzip FileName # 压缩,只能压缩文件

.tar.gz文件、 .tgz文件

# .tar.gz 和 .tgz

tar -zxvf FileName.tar.gz # 解压

tar -zcvf FileName.tar.gz DirName # 将DirName和其下所有文件(夹)压缩

tar -C DesDirName -zxvf FileName.tar.gz # 解压到目标路径

.zip文件

# 感觉.zip占用空间比.tar.gz大

unzip FileName.zip # 解压

zip FileName.zip DirName # 将DirName本身压缩

zip -r FileName.zip DirName # 压缩,递归处理,将指定目录下的所有文件和子目录一并压缩

.rar文件

# mac和linux并没有自带rar,需要去下载

rar x FileName.rar # 解压

rar a FileName.rar DirName # 压缩

.tar是打包,.tar.gz才是压缩过的文件,.tar.gz常见于unix系统,在ubuntu或macos可以直接解压,而.zip常见于windows系统,详情可见 .zip和.tar.gz的文件有什么区别?。

六、进程管理

1,查看进程

ps 显示当前进程

ps -l 显示详细信息

ps -u 以用户的格式显示

相关字段说明

F 进程状态标志

S 进程状态代码

UID 进程执行者ID

PPID 父进程标识(parent process ID)

PRI 进程执行的优先级(priority)

NI 进程执行优先级的nice值,负值表示其优先级较高

SZ 进程占用的内存大小

WCHAN 进程或系统调用等待时的地址

%CPU cpu使用百分比

%MEM 内存使用百分比

VSZ 占用虚拟内存大小

RSS 占用物理内存大小

START 进程开始时间

ps -ef 和ps aux的区别

https://www.linuxidc.com/Linux/2016-07/133515.htm

Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux。

grep命令是查找,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

讨论这个问题,要追溯到Unix系统中的两种风格,System V风格和BSD 风格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,两者输出略有不同。现在的大部分Linux系统都是可以同时使用这两种方式的。

2,kill 删除进程

kill pid 删除指定pid的进程

kill -l 查看所有可供传送的信号

kill -9 pid 强制删除进程,传送的是SIGKILL信号

kill -15 pid 强制删除进程,传送的是SIGTERM信号

kill -HUP pid 重启Deamon进程

cat---一次显示所有内容,适合查看内容较少的文件

格式:

cat 文件名

选项 含义

-b 对非空输出行编号

-n 对输出的所有行编号

make编译

make 编译

make install 安装编译好的源码包

设置日期#date -s mm/dd/yy

设置时间#date -s HH:MM

将时间写入CMOS#hwclock –systohc

读取CMOS时间#hwclock –hctosys

从服务器上同步时间

#sudo ntpdate time.nist.gov

#sudo ntpdate time.windows.com

学习资料

Ubuntu常用命令大全

https://www.cnblogs.com/linuxws/p/9307187.html

centos指令

https://www.cnblogs.com/stream886/p/11123837.html

普通用户切换root用户有两种方法:

(1)"su"或"su root"

password:输入root用户密码

(2)"su -"或"su - root" 注意"-"是一个参数,之后是有一个空格的,直接写"-root"是不行的

password:输入root用户密码

两种方法的区别在于:前者只切换了root身份 , 但是shell环境仍然是普通用户的shell , 而后者是连用户和shell 环境一起切换成了root 身份了 , 只有切换了shell环境才不会出现PATH环境变量错误 。 su切换成root用户之后 pwd 一下 , 发现自己的工作目录仍然是普通用户的工作目录 ;而用su - 命令切换后 工作目录也变成了root的工作目录 , 使用echo $PATH 命令看一下su 和su - 的环境变量有何不同 。 以此类推 , 要从当前用户切换到其他用户应该使用su - 命令 。

root用户切换普通用户:

"su 用户名"或"su - 用户名",同理,前者只是切换了用户(不需要密码),要想连shell环境一起切换就用后边的(需要用户密码)。

原文链接:https://blog.csdn.net/qq_42003566/article/details/86064990

推荐阅读