Linux 常用命令<持续更新--->
1. 操作系统概述
操作系统 Operating System 简称 OS,通俗讲就是一款软件,不过和一般的软件不同,操作系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他的软件都必须在操作系统的支持下才能运行。
2. Linux 目录系统
- /var:包含在正常操作中被改变的文件、假脱机文件、记录文件、加锁文件、临时文件和页格式化文件等。
- /home:包含用户的文件:参数设置文件、个性化文件、文档、数据、EMAIL、缓存数据等,每增加一个用户,部分系统就会根据其用户名在 home 目录下新建和其他用户同名的文件夹,用于保存其用户配置。
- /proc:是一个位于内存中的伪文件系统,他们实际上并不存在于磁盘上,也不占用任何空间(用 ls-l 可以显示它们的大小)当查看这些文件时,实际上是在访问存在内存中的信息,这些信息用于访问系统。/proc目录是内核提供给我们的查询中心,通过查询该目录下的文件内容,可以获取到有关系统硬件及当前运行进程的信息。
- /bin:包含系统启动时需要的执行文件(二进制),这些文件可以被普通用户使用。
- /etc:为操作系统的配置文件目录
- /root:为系统管理员(也叫超级用户或根用户)的 Home 目录。
- /dev:为设备目录,Linux 下设备被当成文件,这样一来硬件被抽象化、便于读写、网络共享以及需要临时装载到文件系统中,正常情况下,设备会有一个独立的子目录,这些设备的内容会出现在独立的子目录下。
3. Linux 命令操作
-
查看当前目录命令:pwd
-
切换目录命令:cd
切换到指定文件夹:cd [目录名称] 打开当前用户的根目录:cd ~ 返回上级目录:cd .. 返回上一跳目录:cd - 打开根目录:cd /
-
浏览目录下的文件列表命令:ls
以列的方式查看当前目录下的文件列表:ls -l,等于ll 查看当前目录下所有的文件(包括隐藏文件):ls -a 以列表的方式查看当前目录下的所有文件:ls -la
-
创建文件目录命令:mkdir
新建文件目录:mkdir 文件夹名称...(支持同时创建多个目录) 递归新建多级目录:mkdir -p 文件夹名称 例如在用户目录下新建 test 目录,命令这样写:mkdir -p test/test1/test2/test3 递归新建多级目录的写法
-
删除文件目录命令:rmdir(只能删除空文件夹,已经被rm -rf取代)
删除指定目录:rmdir 目录名称 递归删除指定目录及中间目录:rmdir -p 目录名称 这里没有写错,没有字母 k
-
删除文件或者目录命令:rm
常用命令:rm -rf [目录或文件] rm -ri [目录或文件] 强制删除文件或目录:rm -rf 目录或者文件 在删除前询问是否确认删除:rm -ri 目录或文件 因为强制删除的后果不太好,一般不建议使用 rm -rf 进行文件删除 rm 命令中不跟 r 参数,无法删除目录,只能删除文件
-
复制文件或目录命令:cp
递归复制目录1下的所有的文件和文件夹到目录2:cp -r [目录1][目录2] 执行复制操作时覆盖原有目录前询问用户:cp -ri [目录1][目录2]
-
移动文件、修改文件名命令:mv
将文件夹1名称更改为文件夹2:mv 文件1 文件2 (同目录下执行,给文件更名) 将目录1的文件移动到目录2:mv 目录2 目录2 (将目录1的文件移动到目录2)
-
创建空文件命令:touch
touch 文件名称
-
查看、编辑文件命令:vi/vim
vi 命令为 UNIX 操作系统或者类 UNIX 操作系统都有具有的功能强大的文件编辑命令,用户输入 vi + 文件名,便可以 进入 vi 模式进行文件内容的查看和编辑,如果文件已经存在,则直接打开文件,如果文件不存在,则系统将打开一个全新的空文件。 vim为vi增强版,部分版本系统需要手动安装
-
vi 的三种模式如下:
-
命令模式
当用户使用 vi 命令打开文件后,则进入命令模式,用户可以输入命令来执行各种功能。
快捷键 | 说明 |
---|---|
L或G | 光标移动至末行首部 |
space或→ | 光标右移一位 |
backspace或者← | 光标左移一位 |
↑ | 光标上移一行 |
↓ | 光标下移一行 |
num 加 k | 光标上移num行 |
num 加 j | 光标下移num行 |
num 加 h | 光标左移num位 |
num 加 l | 光标右移num位 |
-
输入模式(编辑模式)
如果用户要对文件做修改,则可以使用下面几种命令,进入输入模式,用户进入输入模式之后,可以任意修改文件,除了 Esc 键外,用户输入的任何字符都会被作为内容写入文件中,用户输入 Esc 可以对文件进行相关操作。
快捷键 | 说明 |
---|---|
i | 进入输入模式,在光标前插入字符 |
I | 进入输入模式,光标移动至行首,在光标前等待插入字符 |
a | 进入输入模式,在光标后插入字符 |
A | 进入输入模式,光标移动至行尾,在光标后等待插入字符 |
o | 进入输入模式,在光标下一行插入字符 |
O | 进入输入模式,在光标上一行插入字符 |
r | 替换单个字符 |
R | 替换单个字符,替换完成后,光标移动到下一个位置继续等待替换操作 |
dd | 删除当前行 |
ndd | 向下删除n行(包括当前行) |
yy | 复制当前行 |
p | 粘贴 |
Gdgg | 清空文本 |
u | 撤销操作 |
- 末行模式
如果用户完成编辑命令,则可以按照 esc + “:” 进入末行模式,用户可以对文件内容继续进行搜索,也可以输入 “:wq!” 进行文件保存并退出,或者输入 “:q!” 强制退出文件编辑。
快捷键 | 说明 |
---|---|
:wq | 保存退出 |
:q! | 退出不保存 |
:x | 若当前编辑文件被修改过,则保存文件后退出,否则直接退出 |
:s /字符串1/字符串2/g | 把当前行所有字符串1换成字符串2 |
:1,n s/字符串1/字符串2 | 把第1至n行,所有字符串1换成字符串2 |
:% s/字符串1/字符串2 | 表示整个文件,同"1,$" |
:.,$ s/字符串1/字符串2 | 表示从当前行到文件尾 |
:/string | 查找字符串string,n向下继续查找,N向上继续查找 |
:g/string | 列出查找结果 |
:set nu/set nonu | 显示行号/不显示行号 |
:num | 跳至第num行,默认首行从1开始 |
set fileformat=unix | " 将文件格式设置为Unix格式 |
set fileformat=dos | " 将文件格式设置为Windows CRLF格式 |
-
查看、编辑文件命令:cat
显示一个小的文件的内容:cat 文件名称 创建并打开一个新的文件:cat > 文件名称
-
查看文件开头内容命令:head
head [参数] [文件名] 使用 head 命令显示某个文件开始的 n 行数据:head -n 文件名称
-
查看文件结尾内容命令:tail
动态加载某个文件的内容(常用于查看日志文件):tail -f 文件名称 展示文件最后几行的数据:tail -n 行数文件名称
4. Linux 权限管理
4.1 用户和用户组
-
用户是指在一个操作系统中,一系列权限的集合体,操作人员通过用户名和口令可以在系统中执行某一些被允许的操作。不同的用户可以具有不同的权限。Linux 操作系统中每个用户都具有唯一标识 UID,当使用命令创建用户时,如果不指定用户的 UID,则系统将自动为其分配 UID。
-
用户组就是具有相同特征的用户的集合体,在 Linux 系统中,每一个用户都属于至少一个用户组。Linux 操作系统中每个用户分组都具有唯一标识 GID,当使用命令创建用户组时,如果不指定用户组的 GID,则系统将自动为其分配 GID。当使用 -u 指定用户 id 时,用户 id 尽量大于500,以免冲突。因为 Linux 操作系统安装后,会默认建立一些用户,所以可能会占用 500 之内的 id 号。
-
Linux 权限机制有以下特点:
- 系统有一个权限最大的用户,其名称为 root ,root 用户属于 root 用户组。uid=0
- 系统默认只有 root 权限可以添加和删除用户。
- 添加用户之后,如果没有给用户指定用户组,则系统会为用户添加一个同名的用户组,用户属于该组。
- root 切换到普通用户无需登录,普通用户切换到 root 用户需要登陆。
- root 可以给用户赋予和回收某一个文件的读、写、执行的权限。
4.2 用户操作命令
-
切换用户命令:su(switch user)
su [用户名] 或者 su -[用户名] su[用户名]和 su -[用户名]都可以切换用户,前者类似于临时切换用户,当使用该命令进行切换新用户时, 用户配置仍然沿用原来的用户配置,如环境变量、系统变量等。而后者进行切换用户时,环境变量、系统设置全部切换成新用户的用户配置。
-
提升普通用户权限到root用户:sudo(set user do)
只用作提升普通用户权限到root用户,也就是说该命令只有权限修改的功能,sudo仅仅是临时提权的作用。使用sudo 需要修改 /etc/sudoers文件
sudo vi /etc/passwd -
查看当前登陆用户命令:whoami/who/w
-
查看当前用户所属分组命令:groups
-
查看当前用户 UID 和 GID 命令:id
-
添加新用户命令:useradd
取值 | 说明 |
---|---|
-c | comment,指定一段注释性描述 |
-d | 指定用户家目录 |
-g | 指定用户所属组 |
-G | 指定用户附加组 |
-u | 指定uid |
-e | 指定账号的失效日期,日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效。 |
-f | 指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1. |
-m | 自动建立用户的登入目录 |
-M | 不要自动建立用户的登入目录 |
-n | 取消建立以用户名称为名的群组 |
-r | 建立系统账号 |
-s | 指定用户登入后所使用的shell。默认值为/bin/bash |
-k,--skel SKEL_DIR | 使用此目录作为骨架目录,/etc/skel |
缺省 | centos下默认是useradd -m -k ,ubuntu下默认是useradd -M |
-
修改用户密码命令:passwd例如:修改当前用户名为 sang 的用户密码:passwd sang
在添加用户之后,只有为其设置密码,用户才能登陆
参数 | 说明 |
---|---|
-d | 删除密码 |
-f | 强迫用户下次登录时必须修改口令 |
-w | 口令要到期提前警告的天数 |
-k | 更新只能发送在过期之后 |
-l | 停止账号使用 |
-S | 显示密码信息 |
-u | 启用已被停止的账户 |
-x | 指定口令最长存活期 |
-g | 修改群组密码 |
-i | 口令过期后多少天停用账户 |
-
删除用户命令:userdel
删除用户:userdel 用户名
参数 | 说明 |
---|---|
-r | 删除用户并同时删除其登陆信息:userdel -r 用户名 |
-f | 强制删除用户,即使用户已经登录:userdel -f 用户名 |
-
修改用户信息命令:usermod
语法:usermod [选项] [参数] [用户名] 修改用户登录名:usermod -l 新用户名 旧用户名 修改用户所属分组:usermod -g 新组名称 用户名
参数 | 说明 |
---|---|
-c<备注> | 修改用户帐号的备注文字。 |
-d登入目录> | 修改用户登入时的目录。 |
-e<有效期限> | 修改帐号的有效期限。 |
-f<缓冲天数> | 修改在密码过期后多少天即关闭该帐号。 |
-g<群组> | 修改用户所属的群组。 |
-G<群组> | 修改用户所属的附加群组。 |
-l <帐号名称> | (小L)修改用户帐号名称。 |
-L | 锁定用户密码,使密码无效。 |
-s | 修改用户登入后所使用的shell。 |
-u | 修改用户ID。 |
-U | 解除密码锁定。 |
-
添加用户组命令:groupadd
语法:groupadd [选项] [组名称]
参数 | 说明 |
---|---|
缺省 | 添加用户组,groupadd 组名 |
-g | 指定GID,修改用户所属分组:groupadd -g 组GID 组名 |
-r | 创建系统工作组 |
-O | 允许添加组ID不唯一的工作组 |
4.3 权限操作
Linux 操作系统为文件定义了读、写、执行三种权限,不同的用户或者用户组可以具有不同的权限,系统采用 “r”、“w”、“x” 来分别表示文件的读、写、执行权限。使用 ls -l 命令可以查看到用户在当前目录或者文件的操作权限。
详细可以查看 SECTION 7 理解文件权限
举列:
drwxr -xr -x. 2 root root 4096 Sep 23 2011 bin
从左至右分别表示如下含义:
d:代表 bin 数目目录而不是文件
rwx:代表拥有者具有读、写、执行的权限
r -x:代表同组用户具有读、执行的权限,但是没有写权限
r -x:代表其他组用户具有读、执行权限,没有写权限
常用的变更权限命令为:chmod
语法:chmod [选项] [参数]
选项 | 说明 |
---|---|
-c | 显示执行过程,但仅返回更改内容 |
-f | 不显示错误信息 |
-v | 显示过程 |
-R | 目录内文件递归修改 |
chmod 的参数可以分为两种,分别是权限模式和数字模式。
- 权限模式:
权限模式使用 u、g、o 分别代表拥有者、同组用户、其他组用户,使用 + 和一代表赋予和收回权限,使用 r、w、x 代表读、写、执行权限。
例如:将文件01的执行权限给当前用户,写权限赋给用户所在的用户组和其他用户。
chmod u+x,g+w,o+w 01
例如:将文件 f01 的读、写、执行的权限赋给当前用户,将读、写权限赋给用户所在的用户组和其他用户。
chmod u=rwx,g=rw,o=rw f01
- 数字模式:
为了简化授权步骤,用户也可以采用数字模式进行授权,使用二进制的形式代表 r、w、x 三种权限,如:
101 (5) =r-x
111 (7) =rwx
100 (4) =r- -
例如:将文件 f01 的读、写、执行的权限赋给当前用户,将读和执行权限赋给用户组、将写和执行权限赋给其他用户。
chmod 753 f01
例如:将文件 f01 的读、写、执行权限赋给所有用户。
chmod 777 f01
5. Linux 进程管理
在 Linux 的应用中,我们需要对进程进行管理,如查看某个进程是否启动、以及在必要的时刻,杀掉某个线程。
-
查看进程命令:ps
ps 命令是 Linux 操作系统中查看进程的命令,通过 ps 命令我们可以查看 Linux 操作系统中正在运行的过程,并可以获得进程的 PID(进程的唯一标识),通过 PID 可以对进程进行相应的管理。ps -ef | grep [进程关键字]
根据进程关键词查看进程命令显示如下,显示的进程列表中第一列表示开启进程的用户,第二列表示进程唯一标识 PID,第三列表示父进程 PPID,第四列表示 CPU 占用资源比列,最后一列表示进程所执行程序的具体位置。
[shang@localhost ~]$ ps -ef|grep sshd root 1829 1 0 May24 ? 00:00:00 /usr/sbin/sshd shang 24166 24100 0 20:17 pts/2 00:00:00 grep sshd
-
杀掉进程命令:kill
当系统中有进程进入死循环,或者需要被关闭时,我们可以使用 kill 命令对其关闭。
kill -9 [PID] PID 为 Linux 操作系统中进程的标识
6. Linux 其他常用命令大全
- 清屏命令:clear
- 查询命令详细参数命令:man
- 挂载命令:mount
- 启动 SSH 服务命令:service sshd start / systemctl start sshd
- 重启 SSH 服务命令:service sshd restart / systemctl restart sshd
- 关闭 SSH 服务命令:service sshd stop / systemctl stop sshd
- 查看 SSH 服务状态:service sshd status / systemctl status sshd
Linux 大多数情况下都是远程服务器,开发者通过远程工具连接 Linux ,启动了某个项目的 JAR,一旦窗口关闭,JAR 也就停止运行了,因此一般通过如下命令启动 JAR:nohup
java -jar jar-0.0.1-SNAPSHOT.jar &
nohup 表示当前窗口关闭时服务不挂起,
& 表示继续在后台运行
7. Linux 系统软件安装
7.1 常用软件安装
Linux 下常用的软件安装方式有3种。
- tar 安装:如果开发商提供的是 tar、tar.gz、tar.bz 格式的包(其中 tar 格式的为打包后没有压缩的包,gz 结尾的是按照 gzip 打包并压缩的软件包,tar.bz 是按照二进制方式打包并压缩的软件包),可以采用 tar 包安装,tar 安装方式本质上是解压软件开发商提供的软件包,之后在通过相应配置,完成软件的安装。
- rpm 安装:rpm 安装方式是 redhat Linux 系列推出的一个软件包管理器,类似于 Windows 下的 exe 安装程序,可以直接使用 rpm 命令安装。
- yum 安装:yum 安装本质上依然是 rpm 包安装,和 rpm 安装方式的不同之处是用户可以通过 yum 参数,指定安装的软件包,系统将自动从互联网上下载相应的 rpm 软件包。而无须用户关心软件包的下载地址,以及软件包的依赖关系。
解压常用命令
解压压缩命令:tar
语法:tar [选项] [压缩包]
解压 gzip 包:tar -zxvf [包名]
解压 bz 包:tar -jxvf [包名]
解压普通包:tar -xvf [包名]
7.2 安装卸载命令:rpm
语法:rpm [选项] [软件包]
查询是否已经安装了某软件包:rpm -qa|grep [软件包关键词]
卸载已经安装的软件包:rpm -e 软件包全名
安装软件包并查看进度:rpm -ivh 软件包路径
选项 | 说明 |
---|---|
-ivh | 安装并显示安装进度 |
-Uvh | 升级软件包 |
-qpl | 列出rpm包内的文件信息 |
-qpi | 列出rpm包的描述信息 |
-qf | 查找文件属于哪个rpm包 |
-Va | 检验所有的rpm包,查找丢失文件 |
-e | 删除包 |
-qa | 查找已安装的rpm包 |