Linux学习之Linux常用命令整理

2023-11-07

Linux常用命令:
练习3遍以上

一、命令基本格式
1.命令格式:
[root(管理员)@localhost(主机名)~]#(超级用户提示符,普通用户提示符是$) adminis
/root一级目录用pwd print working directory(打印工作目录)查看
/home/user1/二级目录
[root@localhost ~]# cd /usr/local/src/ 切换当前目录
[root@localhost src]#

命令[选项] [参数] 中括号表示可选
注意:个别命令使用时不遵循此歌诗,当有多个选项时,可以写在一起简化选项和完整选项
-a 等于–all
2.查询目录中内容:ls [选项] [文件或目录]
选项:
-a all,显示所有文件,包括隐藏文件,隐藏文件以点”.”开头,.bashrc,隐藏是防止误操作
-l 显示详细信息 longlist长显示
-d 查看目录属性direct
-h 人性化显示文件大小human
-i 显示inode 即i节点
权限:默认10位 - rw- r– r–
-文件类型(最主要的三种:-文件 d目录 |软链接文件)
另外四种文件类型:块设备文件,字符设备文件,套接字文件和管道pipe文件
rw- r– r–
user所有者 g所属组 o其他人
-rw-r–r–. l root root 1207 1月 14 18:18 anaconda-ks.cfg
解释:
-rw-r–r–:权限分布
.:点.可能代表ACL权限
l:引用次数 ,被调用计数
1207:字符大小,一般是字节 # ls -lh:显示字符后单位,方便阅读h,human人性化
第一个root:所有组,主人
第二个root:所属组,用户组
1月14 18:18:最后一次修改的时间

  记忆:r读read,w写write,x执行execute

二、文件处理命令
1.目录处理命令
目录同样是文件,目录用于保存文件
(1).建立目录:mkdir make directories
mkdir -p [目录名]
-p 递归创建,先创建上级目录,再创建第二级目录

[root@localhost ~]# mkdir -p japan/cangls
[root@localhost ~]# ls
anaconda-ks.cfg bols install.log install.log.syslog japan
[root@localhost ~]# cd japan/
[root@localhost japan]# ls
cangls
(2).切换所在目录:cd change directory切换目录
简化操作:
cd ~ 进入当前用户的家目录
cd 进入当前用户的家目录 /Ctrl+L xshell清除屏幕
cd -进入上次目录
cd .. 进入上一级目录
cd . 进入当前目录
[root@localhost japan]# cd /root/
[root@localhost ~]# ls
[root@localhost cangle]# pwd
/root/japan/cangls
[root@localhost cangls]# cd~
[root@localhost ~]# cd japan/cangls
[root@localhost cangls]# cd
[root@localhost ~]# cd -
/root/japan/cangls
[root@localhost cangls]# cd -
root
[root@localhost ~]# cd ..
[root@localhost /]# root目录

.相对路径:参照当前所在目录,进行查找
如:[root@imooc ~]# cd ../usr/local/src/
[root@localhost /]# cd
[root@localhost ~]# pwd
/root
[root@localhost ~]#cd ../usr/local/src/ 相对路径发生改变
[root@localhost src]# pwd
/usr/local/src
[root@localhost src]# cd ../usr/local/src/ 路径已经改变,,所以提示错误无法确认到src中的usr目录
-bash : cd: ../usr/local/src/:没有那个文件或目录
[root@localhost src]#

.绝对路径:从根目录开始指定,一级一级递归查找。在任何目录下,都能进入指定位置,更加可靠
如:[root@localhost src]# cd /etc/
[root@localhost src]# cd /etc/
[root@localhost etc]# cd /etc/
[root@localhost etc]# cd /etc/
[root@localhost etc]# cd /etc/
[root@localhost etc]#
命令在任何目录下都可以运行,毕竟是从根目录开始的
如果不记得的目标目录,

[root@localhost src]# cd /(按两下tab)使用tab可以补全命令或者目录

(3).查询所在目录位置:pwd
.pwd :print working directory打印工作目录,显示当前目录

(4).删除空目录:rmdir
.rmdir [目录名]:remove empty directories 删除空目录
[root@localhost ~]# ls
anaconda-ks.cfg bols install.log install.log.syslog japan
[root@localhost ~]# rmdir bols/
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog japan
[root@localhost ~]# rmdir japan/
rmdir:删除 “japan/”失败:目录非空
因为japan里面有文件夹cangls,所以非空无法删除

(5).删除文件或目录:rm
.rm -rf [文件或目录]
命令英文愿意:remove
选项:
-r 删除目录,删除目录时不可缺少
-f 强制
[root@localhost ~]# rm -rf / 删除根目录99%的文件,几乎等于格式化,自杀式命令

(6).复制命令:cp
cp [选项] [原文件或目录] [目标目录]
命令英文愿意:copy
选项:
-r 复制目录
-p 连带文件属性复制
-d 若源文件是链接文件,则复制链接属性
-a 相当于-pdr
[root@localhost ~]# cpanaconda-ks.cfg /tmp/ana(添加这个名字说明复制过去会更改文件名,不填写则复制过去仍是源文件名)
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog japan
[root@localhost ~]# cp japan/ /tmp/ 注意空格一下隔开japan/和/tmp/
cp:略过目录”japan/” 需要添加-r
[root@localhost ~]# cp -r japan/ /tmp/
[root@localhost ~]# ls /tmp/
ana japan yum.log
可以使用ll查看我文件属性和权限分布
[root@localhost ~]# ll 或者写成ls -l
总用量 48
- rw——-. 1 root root 1207 1月 14 20:38 ana
普通复制出来的文件时间新旧文件时间不一致
[root@localhost ~]# cp -pdr
复制出来的文件和源文件属性等全部一致

(7)剪切或改名命令:mv
mv [原文件或目录][目标目录]
英文原意:move
剪切不区分文件和目录,不加-r
[root@localhost ~]# mv japan/ /tmp/japan1 不在同一个目录下是剪切
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog
[root@localhost ~]# cd /tmp/
[root@localhost tmp]# ls
ana anaconda-ks.cfg japan japan1 yum.log
改名:
[root@localhost tmp]# mv anaconda-ks.cfg longls 在同一个目录下就变成改名了
[root@localhost tmp]# ls
ana japan japan1 longls yum.log

常用一级目录的作用:
/根目录
/bin 命令保存目录(普通用户就可以读取的命令)
根目录/下的bin和sbin,usr目录下的bin和sbin四个目录都是用来保存系统命令的,sbin只有root才能使用,普通用户不行sbin,super bin
/boot 启动目录,启动相关文件
/dev 设备配置文件保存目录
/etc 配置文件保存目录
/root 超级用户的家目录
/home 普通用户的家目录
/lib 系统库保存目录,常用函数库
/mnt 系统挂载文件,cd-rom挂载光盘,usb挂载U盘
/media 挂载目录
/misc 空目录,最后三个是用挂载目录
使用规范,约定俗成的目录名
/proc/直接写入内存
/sys/
proc和sys目录是不能直接操作的,用来保存内存的过载点
不能用来存放数据,首先内存不能永久保存,而且存放会使系统变慢
/var 系统相关文档的内容
/tmp 存放临时文件
总结:可以在家目录root或home,以及tmp目录下随便放内容
根目录只存放必要的文件

(8).链接命令:ln
ln -s [原文件][目标文件]
命令英文原意:link
功能描述:生成链接文件
选项: -s 创建软链接 soft
.硬链接特征:
1、拥有相同的i节点和存储block块(一般4KB一个block),可以看做是同一个文件
相当于一个存储文件的不同的获取入口,镜像一样存储double份
2、可以通过i节点识别
3、不能跨分区
4、不能针对目录使用
[root@localhost ~]# ls
anacondalks.cfg cangls install.log install.log.syslog
[root@localhost ~]# ln /root/anaconda-ks.cfg /tmp/ana.hard
[root@localhost ~]# ll
总用量 44
-w——–. 2 root root 1207 1月 14 18:18 anaconda-ks.cfg

[root@localhost ~]# ll /tmp/
总用量 12
-w——–. 2 root root 1207 1月 14 18:18 ana.hard,引用计数都加1
通过任意方式打开修改后,通过另外一个仍可以查看文件,权限一致,其实就是同一个文件
缺陷:不能跨分区,不能针对目录

.软链接特征:
1、类似windows快捷方式,方便打开
2、软链接拥有自己的i节点和block块,但是数据块中保存原文件的文件名和i节点号,并没有实际的文件数据,是原文件的i节点和block块
3、lrwxrwxrwx |软链接
软链接文件权限都为rwxrwxrwx,查看软链接文件的权限,区别于原文件
4、修改任意文件,另一个都改变
5、删除原文件,软链接不能使用
限制少,而且灵活

[root@localhost ~]# ls
anacondalks.cfg cangls install.log install.log.syslog
[root@localhost ~]# ln -s /root/anaconda-ks.cfg /tmp/cangls.soft
[root@localhost ~]# ln /root/cangls /tmp/cangls.hard
[root@localhost ~]# ll
总用量 40
-rw-r–r–. 2 root root 1207 1月 14 22:00 cangls

[root@localhost ~]# ll -i
262419 -rw-r–r–. 2 root root 0 1月 14 22:00 cangls
262147 -rw-r–r–. 1 root root 24772 1月 14 18:17 install.log

[root@localhost ~]# ll -i /tmp/
262418 -rw——–. 1 root root 1216 1月 14 22:36 ana.hard
932110 -rw-r–r—. 1 root root 0 1月 14 22:00 cangls
262419 -rw-r–r–. 2 root root 0 1月 14 22:00 cangls.hard
932061 lrwxrwxrwx. 1 root root 12 1月 14 22:46 cangls.soft -> /root/cangls
其中rwx是指访问软链接的权限,不是原文件的权限,主要分析inode,权限变化,引用计数

使用[root@localhost ~]# cat /tmp/cangls.hard
[root@localhost ~]# cat /tmp/cangls.soft
查看文件
做软链接需要使用绝对目标,否则会难以查找,或者在同一目录下修改

三、文件搜索命令:

1.文件搜索命令locate
速度快,但只能按照文件名搜索
格式:locate 文件名,只能通过文件名来搜索
在后台数据库中按文件名搜索,搜索速度快
[root@localhost ~]# locate install,log
/root/install.log
/root/install.log.syslog
是否可以搜索新建文件?
[root@localhost ~]# touch cangls
[root@localhost ~]# locate cangls
[root@localhost ~]# 搜索不到,因为数据库未更新,每天更新一次

/var/lib/mlocate

locate命令所搜索的后台数据库

[root@localhost ~]# updatedb
[root@localhost ~]# locate cangls
/root/cangls
updatedb
更新数据库
但是,
[root@localhost ~]# touch /tmp/cangls
[root@localhost ~]# updatedb
[root@localhost ~]# locate cangls
/root/cangls
没有出现/tmp/cangls
原因:locate搜索是按照/etc.updatedb.conf配置文件来进行搜索的
而 PRUNEPATHS = tmp,即tmp不再搜索路径
详情:
PRUNE_BIND_MOUNTS=”yes”

开启搜索限制,限制全部生效,当是“no”时不搜索

PRUNEFS =

搜索时,不搜索的文件系统

PRUNENAMES =

搜索时,不搜索的文件类型

PRUNEPATHS =

搜索时,不搜索的路径

2.命令搜索命令whereis与which,用来搜索系统命令
(1).whereis 命令名,只能查系统文件命令
#搜索命令所在路径及帮助文档所在位置
选项:
-b :只查找可执行文件
-m :只查找帮助文件
[root@localhost ~]# whereis ls
ls:/bin/ls /usr/share/man/man1/ls.l.gz .usr/share/man/manlp/ls.lp.gz
后面的是帮助文档的位置
[root@localhost ~]# whoami 查看我是谁
root
[root@localhost ~]# whatis ls 查询这条命令的作用*

ls (l) - list directory contents显示目录
ls (lp) - list directory contents
[root@localhost ~]# whereis -b ls只看可执行文件位置
ls: /bin/ls
[root@localhost ~]# whereis -m ls只查看帮助文档位置
ls: /usr/share/man/man1/ls.l.gz /usr/share/man/manlp/ls/lp/gz

(2).which 命令名,除了查看位置,还能查看到别名
#搜索命令所在路径及别名
[root@localhost ~]# which ls
alias ls=’ls –color=auto’颜色显示
/bin/ls
[root@localhost ~]# whereis cd #cd属于shell内置命令
cd: /usr/share/man/manl/cd.l.gz /usr/share/man/manlp/cd/lp/gz
[root@localhost ~]# which cd
/usr/bin/which:no cd in()
whereis和which的搜索路径都依赖PATH所定义的路径

补充:
要想直接执行执行脚本或者执行命令,就应该使用绝对路径
PATH环境变量
PATH环境变量:定义的是系统搜索命令的路径
[root@localhost ~]# echo $PATH
/usr/lib/qt-3.3/bin:
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
用冒号分割的不同命令,说明在这些目录里搜索需要的命令,搜索到后执行,如果搜索完之后都没有找到,就会提示错误
执行个人脚本时,应当记住绝对路径或者存放到PATH所要求的路径之中

3.文件搜索命令find
耗费资源,全部遍历
find [搜索范围][搜索条件]
#搜索文件
(1).find / -name install.log
#避免大范围搜索,这会耗费系统资源
#find是在系统当中搜索符合条件的文件名,使用通配符匹配,通配符是完全匹配的
[root@localhost ~]# ls
abc abd install.log install.log.syslog
[root@localhost ~]# find / -name install.log
/root/install.log
你会发现没有install.log.syslog,其实find默认是精确搜索,如果要模糊搜索需要使用到通配符

(2).Linux中的通配符:
* 匹配任意内容
? 匹配任意一个字符
[] 匹配人一个中括号内的字符,像python的range(),从里面选通配符
[root@localhost ~]# ls
abc abd install.log install.log.syslog
[root@localhost ~]# find / -name “install.log*”
/root/install.log
/root/install.log.syslog

[root@localhost ~]# ls
abc abd install.log install.log.syslog
[root@localhost ~]# find /root -name “ab[cd]”
abc
abd
如果没有ab只是[cd]说明只是搜索c或者d的文件,可以使用*[cd]查找结尾包含c或d的所有文件

(3).另外:
find /root -iname install.log
#不区分大小写

find /root -user root
#按照所有者搜索
[root@localhost ~]# find /root -user root
/root

find /root -nouser

查找没有所有者的文件

[root@localhost ~]# find /root -nouser
没有所有者的文件是垃圾文件,但是有一些特殊文件:
1).系统内核自己产生的没有所有者,如果是在sys,proc中产生
2).外来数据,光盘,u盘,移动数据

a)find /var/log/ -mtime +10
#查找10天前修改的文件
详细分为三种:
find /var/log/ -mtime -10 10天内修改的文件
find /var/log/ -mtime 10 10天当天修改的文件
find /var/log/ -mtime +10 10天前修改的文件

atime 文件访问时间 access time访问时间
ctime 改变文件属性 change time修改时间
mtime 修改文件内容 modify time修改时间

b)find -size 25k
#查找文件大小是25kB的文件
详细情况也分为三种:
-25k 小于25kB的文件
25K 等于25kB的文件
+25K 大于25kB的文件
注意:k是小写,M是大写,不然报错
find:无效的 -size 类型 “m”,”K”
不写单位也不行,大小是以块为单位的,一般大小是4kB,如果没单位如25是表示25个扇区(默认是512kB)的容量大小

d)find -inum 262421
#查找i节点是262421的文件
[root@localhost ~]# ls -i
262242 abc 262421 abd
[root@localhost ~]# find -inum 262421
/root/abd

e)find /etc -size +20k -a -size -50k
#查找/etc/目录下,大于20kB且小于50kB的文件
-a and 逻辑与,两个条件都需要满足
-o or 逻辑或,两个条件只需要满足一个即可

find /etc -size +20k -a -size -50k -exec ls -lh{}\;
#find命令执行结果通过-exec让第二个命令ls -lh进行处理
#查找/etc/目录下,大于20kB并且小于50kB的文件,并显示详细信息
#-exec/-ok命令{}\;对搜索结果执行操作

4.字符串搜索命令grep
grep [选项]字符串 文件名
#在文件当中匹配符合条件的字符串
选项:
-i 忽略大小写 ignore忽略
-v 排除指定字符串 即搜索不包含字符串的
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog
[root@localhost ~]# grep “size” anaconda-ks.cfg

part /boot –fatype=ext4 –size=200

part /boot –fatype=ext4 –size=2000

part swap –size=512

part / –fstype=ext4 –grow –size=200

可以用cat查看文件

5.find命令与grep命令的区别
find命令:在系统当中搜索符合条件的文件名,如果需要匹配,则使用通配符匹配,通配符是完全匹配,就是搜索的结果和条件一模一样

grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配,结果只需要包含搜索条件就可以

四、帮助命令
1.帮助命令man;manual,文档的缩写
man 命令
#获取指定命令的帮助
man ls
#查看ls的帮助
LS(1(命令级别)) User Commands
NAME 命名
ls -list directory contents
SYNOPSIS格式
ls [OPTION]…[FILE]….
可以直接使用/-d查看ls -d的帮助内容,按n往下依次浏览,按Shift+n往上浏览
man的级别:命令级别
1: 查看命令的帮助
2: 查看可悲内核调用的函数的帮助
3: 查看函数和函数库的帮助
4: 查看特殊文件的帮助
5: 查看配置文件的帮助
6: 查看游戏的帮助
7: 查看其他杂项的帮助
8: 查看系统管理员root可用命令的帮助
9: 查看内核相关文件的帮助
[root@localhost ~]# man -f passwd
passwd (1) - update user’s authentication token
passwd (5) - password file
passwd [sslpasswd] (lssl) -compute password hashes
[root@localhost ~]# whereis passwd
passwd: /usr/bin/passwd(命令位置) /etc/passwd(配置文件位置) /usr/share/man/manl/passwd.1.gz(1等级的帮助文件位置) /usr/share/man5/passwd.5.gz(5等级的帮助文件位置)

man -f 命令
#查看命令所拥有的那个级别的帮助信息
相当于
whatis 命令
举例:
man -5 passwd
man -4 null
man -8 ifconfig
[root@localhost ~]# whatis ls
(1) - list directory contents
(1p) - list directory contents
[root@localhost ~]# man -f null
(4) - data sink
[root@localhost ~]# man 4 null
有多个等级号就要指定等级号,不然就会从等级号最小的帮助文档开始打开

man -k 命令
#查看和命令相关的所有帮助文档
相当于
apropos命令
例如:
apropos passwd

2.其他帮助命令
(1).选项帮助命令:
命令 –help 即man ,–help有部分翻译成中文了
#获取命令选项的帮助
例如:
ls –help
(2).shell内部命令帮助,shell壳,内核编译器,用户和系统交互的接口
help shell内部命令
#获取shell内部命令的帮助
例如:
whereis cd
#确定是否是shell内部命令,可以用whereis查看命令位置,如果只有帮助文档,说明是系统内核自带,如果显示出了执行文件,那么说明是后面添加的命令程序
help cd
#获取内部命令帮助,man cd是无法获取内部,然而help无法获得外部命令帮助
(3).详细命令帮助info
info 命令
-回车: 进入子帮助界面(带有*的标记才可以回车)
-u : 进入上层界面,up
-n : 进入下一个帮助小节
-p : 进入上一个帮助小节
-q : 退出quit

五、压缩命令
常用压缩格式: .zip .gz .bz2 .tar.gz .tar.bz2
.rar压缩率高

(1).zip格式压缩
.zip压缩文件名 源文件
#压缩文件
.zip -r 压缩文件名 源目录
#压缩目录
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog longzls
[root@localhost ~]# zip longzls.zip longzls(空文件,所以压缩0%)
adding: longzls (stored 0%)
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog longzls longzls.zip
[root@localhost ~]#
注意:后缀不能缺少,不是因为系统原因,毕竟linux不区分后缀名,但是为了方便管理员管理不应该缺少
压缩文件是有个压缩格式的存储,如果源文件比较小,会发现压缩后文件反而更大,但是当你的压缩文件很大的时候,就会有比较好的效果
[root@localhost ~]# mkdir jp
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog jp longzls longzls.zip
[root@localhost ~]# touch jp/cangls
[root@localhost ~]# touch jp/longls
[root@localhost ~]# touch jp/bols
[root@localhost ~]# zip -r jp.zip jp
(2).zip格式解压缩
unzip压缩文件
#解压缩.zip文件
[root@localhost ~]# unzip jp.zip
(3).gz格式压缩
1).gzip 源文件
#压缩为.gz格式的压缩文件,源文件会消失
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog jp longzls
[root@localhost ~]# gzip longzls
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog jp longzls.gz
2).gzip -c 源文件 > 压缩文件
#-c是将文件内容输出,通过>指向输出位置,实现压缩,原文件也没有消失,如果没有目标,那么将直接输出到屏幕上
#压缩为.gz格式,原文件保留
例如:
gzip -c cangls > cangls.gz
3). gzip -r 目录
#压缩目录下所有的子文件,但是不能压缩目录
补充:.gz可以在windows中解压缩,但是.rar在linux不可以解压缩
[root@localhost ~]# gzip -r jp
[root@localhost ~]# ls
abc abc.gz anaconda-ks.cfg install.log install.long.syslog jp longzls.gz
[root@localhost ~]# cd jp/
[root@localhost jp]# ls
bols.gz cangls.gz longls.gz
压缩了目录下的子文件,但是没有压缩目录
(4).gz格式解压缩
gzip -d 压缩文件
#解压缩文件
gunzip 压缩文件
#解压缩文件
解压缩后,压缩文件会消失,源文件出现,而且解压缩目录时候同样不能缺少-r,即
gunzip -r 压缩文件
(5).bz2格式压缩
bzip2 源文件
#压缩为.bz2格式,不保留源文件
bzip2 -k 源文件 keep保留
#压缩之后保留源文件
注意:bzip2命令不能压缩目录
(6).bz2格式解压缩
bzip2 -d 压缩文件
#解压缩,-k保留压缩文件
bunzip2 压缩文件
#解压缩,-k保留压缩文件
注意:bunzip2同样不能解压缩目录
(7).tar.gz,tar.bz2压缩格式
tar打包,先打包,再压缩
tar -cvf 打包文件名 源文件
选项:
-c:打包
-v:显示过程
-f:指定打包后的文件名
-t: test测试,不解压只查看
例如:
tar -cvf longzls.tar longzls
[root@localhost ~]# tar -cvf jp.tar jp
jp/
jp/bols
jp/longls
jp/cangls
[root@localhost ~]# gzip jp.tar
[root@localhost ~]# ls
abc abc.gz anaconda-ks.cfg install.log install.long.syslog jp jp.tar.gz
通过tar和gzip实现目录的压缩
tar.gz压缩格式:
其实.tar.gz格式是先打包为.tar格式,再压缩为.gz格式
tar -zcvf 压缩包名 .tar.gz 源文件
选项:
-z:压缩为.tar.gz格式
tar -zxvf 压缩包名 .tar.gz
选项:
-x: 解压缩.tar.gz格式

 tar.bz2压缩格式:

同样.tar.bz2格式也是先打包为.tar格式,再压缩为.bz2格式
tar -jcvf 压缩包名 .tar.bz2 源文件
选项:
-j:压缩为.tar.bz2格式
tar -jxvf 压缩包名 .tar.bz2
选项:
-x: 解压缩.tar.bz2格式
注意前后压缩解压缩的格式一致性,不然会出错
(8).tar.gz,tar.bz2解压缩命令
tar -xvf
选项:
-x:解包
-v:显示过程
-f:指定打包后的文件
-t: test测试,不解压只查看

六、关机重启命令
1.shutdown命令
[root@localhost ~]# shutdown [选项]时间
选项:
-c:取消前一个关机命令 console取消
-h:关机
-r:重启 一般远程重启,很少会远程关机,那么开机要亲自去开机

2.其他关机命令:
[root@localhost ~]# halt
[root@localhost ~]# poweroff
[root@localhost ~]# init 0
都不安全,不会保存当前情况
[root@localhost ~]# reboot 相对安全
[root@localhost ~]# init 6
init 0和init 6数字的意思:系统运行级别
0 关机 不允许设置为系统默认级别
1 单用户
2 不完全多用户,不含NFS服务,NFS文件共享符
3 完全多用户 支持NFS
4 未分配
5 图形界面#需要提前安装Xll,大写X表示图形界面
6 重启 不允许设置为系统默认级别

[root@localhost ~]# cat /etc/inittab

修改系统默认运行级别

id:3:initdefault:

[root@localhost ~]# runlevel

查询系统当前运行级别

N 3
N,Null,进入3级别之前是空级别,现在是3级别

[root@localhost ~]# logout

推出登陆命令

允许同时登陆的用户是有数量要求,所以关机时应该先退出登录

七、挂载命令
挂载相当于windows分配盘符,而盘符在linux称为挂载点
U盘,光盘,移动硬盘重启后都需要重新分配盘符,其他固定盘分配后都会自动挂载

1、查询与自动挂载
[root@localhost ~ ]# mount

查询系统中已经挂载的设备

[root@localhost ~ ]# mount
/dev/sda5 on / type ext4 (rw) #第一个分区
proc on /proc type proc (rw)

dev:所有特殊设备
sda5中的sd:SCSI硬盘接口200MB/s(服务器接口)、SATA硬盘接口SATA3<500MB/s(串口硬盘)
5:第5个分区

补充:
系统分区:
(1)磁盘分区:磁盘分区是使用分区编辑器(partition editor)分几个逻辑部分。碟片一旦划分成数个分区(partition),不同类的目录和文件可以存储近不同的分区(逻辑上)
分区规则:主分区:最多四个(硬盘结构,每个扇区512字节,446字节记录存储信息,64个字节用于分区表示,每16个字节表示一个分区)
扩展分区:最多一个
主分区和扩展分区最多四个
不能写入数据,只能包含逻辑分区

      主分区加扩展分区只能有四个
      逻辑分区

(2)分区设备名与挂载:
给每个分区起一个分区名才能使用,以便于之后为分区分配盘符,分区->格式化->起名->分配盘符
windows:分区->格式化->分配盘符
常见硬件设备文件名:
/:根目录dev硬件文件/描述字符(硬件自行检测)[接口编号]
IDE硬盘: /dev/hd[a-d]如/dev/hda1
SCSi/SATA/USB硬盘:/dev/sd[a-p]如/dev/sda1
光驱:/dev/cdrom或/dev/hdc
软盘:/dev/fd[0-1]
打印机(25针):/dev/lp[0-2]
打印机(USB):/dev/usb/lp[0-15]
鼠标:/dev/mouse
/dev/hda1(IDE硬盘接口<133M/s)CPU32—64位,8*8b
/dev/sda1(SCSI硬盘接口200MB/s、SATA硬盘接口SATA3<500MB/s)
a)分区表示:
注:1,2,3,4编号只能给主分区或者扩展分区使用,5开始才能给逻辑分区使用
b)挂载(给分区分配盘符的过程(盘符连接分区的过程)):
拿目录做盘符(盘符是windows概念,用CDEF表示,但是在linux用挂载点表示)
注:必须分区:
/根分区
swap分区(交换分区,内存两倍,不超过2GB)同windows虚拟内存
真实机小于4G,SWAP分两倍;SWAP大于4G时,分区使用相同内存就可以
推荐分区:
/boot(启动分区,200M)
根目录和子目录依旧分开分区,相互不影响

ext4:文件系统
rw:权限是读写
proc:直接写入内存
proc和sys目录是不能直接操作的,用来保存内存的过载点,系统自动挂载

[root@localhost ~]# mount -a

依据配置文件/etc/fstab的内容,自动挂载

[root@localhost ~]# vi /etc/fstab

自动挂载的分区,将相关的文件写入了ext4,swap目录下了

UUID … / ext4 defaults 1 1
UUID … /boot ext4 defaults 1 2
UUID … /home ext4 defaults 1 2
UUID … swap ext4 defaults 0 0
注意:光盘,U盘,移动盘载入后设置成了自动挂载,如果取出了的话,系统无法挂载,系统就会出现错误

2、挂载命令格式
[root@localhost ~]# mount [-t 文件系统][-o 特殊选项] 设备 文件名 挂载点
选项:
-t 文件系统:假如文件系统类型来制定挂载的类型,可以是ext3,ext4,iso9660等文件系统
-o 特殊选项:可以指定挂载的额外选项
特殊选项:

[root@localhost ~]# mount -o remount,noexec/home

重新挂载/boot分区,并使用noexec权限

[root@localhost sh]# cd /home
[root@localhost boot]# vi hello.sh
[root@localhost boot]# chmod 755 hello.sh
[root@localhost boot]# ./hello.sh
[root@localhost boot]# mount -o remount,exec /home

记得改回来,要不然会影响系统启动的

[root@localhost ~]# cd home
[root@localhost home]# ls
lost+found user1
[root@localhost home]# vi hello.sh 回车写一段脚本文件

!/bin/bash 必须带有,表明之后的都是这段脚本,如果不写标记,嵌套时会出现错误

echo.”hello,linux!!!”

:wq
保存
[root@localhost home]# chmod 755 hello.sh
[root@localhost home]# ll
-rwxr-xr-x. 1 root root 36 10月 9 22:31 hello.sh
[root@localhost home]# ./hello.sh ./代表当前目录下
hello,linux!!!
[root@localhost home]# /home/hello.sh
hello,linux!!!
[root@localhost home]#

[root@localhost home]# mount -o remount,noexec /home/
[root@localhost home]# ./hello.sh
-bash: ./hello.sh: 权限不够
[root@localhost home]# ll
-rwxr-xr-x. 1 root root 36 10月 9 22:31 hello.sh
具有执行权限,而且我还是系统管理员,但是仍无法执行文件,原因是因为remount重新挂载后特殊选项选了noexec,不允许执行
[root@localhost home]# whoami
root
[root@localhost home]# mount -o remount,exec /home/
[root@localhost home]# ./hello.sh
hello,linux!!!
[root@localhost home]#
上面所挂载的home分区并没有按照这个格式:
[root@localhost ~]# mount [-t 文件系统][-o 特殊选项] 设备 文件名 挂载点
进行挂载,是不是应该加上去呢,其实nome分区默认是挂载好了的,本系统默认挂载在sda2
/dev/sda1 on /boot type ext4 (rw)
/dev/sda2 on /home type ext4 (rw)
可以省略,但是挂载光盘之类的都一致要加上去

3、挂载光盘
[root@localhost ~]# mkdir /mnt/cdrom/

建立挂载点,挂载点只要是空目录就可以

[root@localhost ~]# mount -t iso9660 /dev/cdrom/mnt/cdrom/

挂载光盘

[root@localhost ~]# mount -t iso9660 /dev/sr0 /mnt/cdrom/

执行挂载命令

[root@localhost ~]# cd /home
[root@localhost home]# ls /
bin cgroup etc lib media mnt opt root selinux sys usr
boot dev home lost+found misc net proc sbin srv tmp var
[root@localhost home]# mkdir /mnt/cdrom
[root@localhost home]# ll /dev/cdrom
lrwxrwxrwx. 1 root root 3 10月 9 18:43 /dev/cdrom -> sr0

发现其实/dev/cdrom和sr0是软链接,软链接有的需要完全启动后才有效

[root@localhost home]# mount -t(可省略-t) iso9660 /dev/sr0 /mnt/cdrom/
mount:block device /dev/sr0 is write-protected,mounting read-only
[root@localhost home]# cd /mnt/cdrom/
[root@localhost cdrom]# ls

windows可以直接弹出光盘,但是Linux不行,如果要弹出光盘,需要卸载
4、卸载命令

[root@localhost cdrom]# umount /mnt/cdrom/
umount: /mnt/cdrom: device is busy
[root@localhost cdrom]# ls
[root@localhost cdrom]# pwd
/mnt/cdrom

因为你在光盘当前目录下,所以你正在使用到cdrom,is busy

[root@localhost cdrom]# cd
[root@localhost ~]# umount /mnt/cdrom/
[root@localhost ~]# cd /mnt/cdrom/
[root@localhost ~]# ls
[root@localhost ~]#

里面的数据就空了

[root@localhost ~]# umount 设备文件名或挂载点
[root@localhost ~]# umount /mnt/cdrom
必须卸载后才能拿出

5、挂载U盘
[root@localhost ~]# cd cdrom
[root@localhost cdrom]# fdisk -l
Device Boot Start

[root@localhost ~]# fdisk -l

查看U盘设备文件名

[root@localhost ~]# mount -t vfat /dev/sdb1 /mnt/usb/
注意:Linux默认是不支持NTFS文件系统的,需要把NTFS驱动重新加载
我们可以安装NTFS-3g,但是都是只读的
vfat:fat32,只能不支持4个G的存储

八、用户登录查看命令
1、查看登录用户信息
(1).w 用户名
命令输出:
USER:登陆的用户名;
TTY:登陆终端;
FROM:从哪个IP地址登录;
LOGIN@:登陆时间;
IDLE:用户闲置时间
JCPU:指的是和该终端连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间
PCPU:是指当前进程所占用的时间
WHAT:当前正在运行的命令
[root@localhost ~]# w
23:57:52 up 4:22, 2users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 18:47 58:15 0.17s 0.17s -bash
root pts/0 192.168.0.155 22:10 0,00s 0.13s 0.04s w
2users:两个用户
三个0.00:系统在1分钟,5分钟,15分钟下系统平均负载,值越高,系统负载越大
tty1:本机终端
pts/0:第一个远程终端
192.168.0.155:远程终端的IP
IDLE,JCPU,PCPU越大说明耗费资源越多
[root@localhost ~]#

(2).who 用户名
命令输出:
- 用户名
- 登陆终端
- 登陆时间(登陆来源IP地址)
[root@localhost ~]# who
root pts/0 2015-07-27 22:10 (192.168.0.155)

(3).last
last命令默认是读取/var/log/wtmp文件数据
命令输出:
- 用户名
- 登陆终端
- 登录IP
- 登陆时间
- 退出时间(在线时间)
可以看到用户所有的登录信息和重启信息,判断所有用户的登录信息,如果是使用vi命令打开/var/log/wtmp,只能看到乱码,是为了防止被修改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux学习之Linux常用命令整理 的相关文章

  • Linux 中的无缓冲 I/O

    我正在写入大量的数据 这些数据数周内都不会再次读取 由于我的程序运行 机器上的可用内存量 显示为 空闲 或 顶部 很快下降 我的内存量应用程序使用量不会增加 其他进程使用的内存量也不会增加 这让我相信内存正在被文件系统缓存消耗 因为我不打算
  • 通过特定分隔符删除字符串

    我的文件中有几列 其中第二列有 分隔符 我想删除第二列中的第一个 第三个和第四个字符串 并将第二个字符串留在该列中 但我有正常的分隔符空间 所以我不知道 input 22 16050075 A G 16050075 A G 22 16050
  • 仅打印“docker-container ls -la”输出中的“Names”列

    发出时docker container ls la命令 输出如下所示 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a67f0c2b1769 busybox tail f dev
  • 应用程序无缘无故地被杀死。怀疑 BSS 高。如何调试呢?

    我已经在CentOs6 6中成功运行我的应用程序 最近 硬件 主板和内存 更新了 我的应用程序现在毫无理由地被杀死 root localhost PktBlaster PktBlaster Killed 文件和 ldd 输出 root lo
  • Jenkins中找不到环境变量

    我想在詹金斯中设置很多变量 我试过把它们放进去 bashrc bash profile and profile of the jenkins用户 但 Jenkins 在构建发生时找不到它们 唯一有效的方法是将所有环境变量放入Jenkinsf
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • Linux中的CONFIG_OF是什么?

    我看到它在很多地方被广泛使用 但不明白在什么场景下我需要使用它 What is 配置 OF OF 的全名是什么 打开固件 这是很久以前发明的 当时苹果公司正在生产基于 PowerPC CPU 的笔记本电脑 而 Sun Microsystem
  • sendfile64 只复制约2GB

    我需要使用 sendfile64 复制大约 16GB 的文件 到目前为止我所取得的成就是 include
  • 在哪里可以找到并安装 pygame 的依赖项?

    我对 Linux 比较陌生 正在尝试安装 python 的 pygame 开发环境 当我运行 setup py 时 它说我需要安装以下依赖项 我找到并安装了其中之一 SDL 然而 其他人则更加难以捉摸 Hunting dependencie
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • nslookup 报告“无法解析 '(null)': 名称无法解析”,尽管它成功解析了 DNS 名称

    我在 ubuntu 上 并且正在运行 docker 默认桥接网络 我有 Zookeeper kafka 的容器化版本 以及我编写的与 kafka 对话的应用程序 I do a docker exec it
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • Linux:在文件保存时触发 Shell 命令

    我想在修改文件时自动触发 shell 命令 我认为这可以通过注册 inotify 挂钩并调用来在代码中完成system 但是是否有更高级别的 bash 命令可以完成此任务 尝试 inotify 工具 我在复制链接时遇到问题 抱歉 但 Git
  • ubuntu:升级软件(cmake)-版本消歧(本地编译)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的机器上安装了 cmake 2 8 0 来自 ubuntu 软件包 二进制文件放置在 usr bin cmake 中 我需要将 cmake 版本至少
  • 如何通过保持目录结构完整来同步路径中匹配模式的文件?

    我想将所有文件从服务器 A 复制到服务器 B 这些文件在不同级别的文件系统层次结构中具有相同的父目录名称 例如 var lib data sub1 sub2 commonname filetobecopied foo var lib dat
  • C语言中如何通过内存地址映射函数名和行号?

    如何用 GCC 中的内存地址映射回函数名称和行号 即假设一个 C 语言原型 void func Get the address of caller maybe this could be avoided MemoryAddress get
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • 如何更改 Apache 服务器的根目录? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何更改 Apache 服务器的文档根目录 我基本上想要localhost从 来 users spencer projects目录而不是

随机推荐

  • 最小二乘法圆拟合(附完整代码)

    文章目录 一 2D圆弧拟合 1 不经过给定起点与终点 2 精确经过给定起点与终点 二 3D圆弧拟合 一 2D圆弧拟合 1 不经过给定起点与终点 平面圆的一般方程为 x 2
  • RFID医疗耗材柜管理系统中的解决方案

    1 社会背景 医疗物资管理 传统的管理流程由于周期短 效率高 被各大医院广泛采用 但随之高值耗材种类激增所带来的准入标准弱化 信息追踪困难 管理责任不明确 历史数据统计分析困难等一系列问题日趋严峻 其次医院内部设备 财务和临床科室相互独立兼
  • 【unordered_map和unordered_set的封装】

    文章目录 1 哈希表的基本改造 2 迭代器 2 1 迭代器的大致框架 2 2 运算符重载的实现 2 3 哈希表的完善 3 unordered map和unordered set的封装 3 1 unordered map 3 2 unorde
  • MPC入门与Matlab实现

    本文为B站视频 你还在用PID MPC模型预测控制 从公式到代码 的学习笔记 强烈推荐去看这位大佬的视频 链接放在了最后 别忘了给大佬一键三连哈 MPC入门与Matlab实现 前言 1 模型 2 预测 3 滚动优化 参考轨迹 优化目标 4
  • python使用pymysql总是超时的解决方案

    可以使用如下方法对代码进行包裹 import pymysql import yaml from loguru import logger mysql config db my db host 127 0 0 1 user test user
  • SQLite多线程读写

    多线程读写 SQLite 实质上是将数据写入一个文件 通常情况下 在应用的包名下面都能找到 xxx db 的文件 拥有 root 权限的手机 可以通过 adb shell 看到 data data packagename databases
  • Java程序员该如何突破瓶颈,成长为优秀的架构师

    一 如何定义架构师 Java架构师 首先要是一个Java程序员 熟练掌握使用各种框架 并知道它们实现的原理 Java虚拟机原理 调优 懂得JVM能让你写出性能更好的代码 池技术 什么对象池 怎么解决并发量 连接池 线程池 Java反射技术
  • MATLAB的一些简单命令(1)

    关键字 if A y prctile input linspace disp 注释 本博客讲解了一些matlab常用简单命令的含义 这些命令简单却容易忘记 所以便整合了一下 至于较为复杂的命令 则将会单独写博客记录 为什么代码段设置选项没有
  • 华为OD机试-不爱施肥的小布-2022Q4 A卷-Py/Java/JS

    题目 某农场主管理了一大片果园 fields表示不同果林的面积 单位 m 2 现在要为所有的果林施肥且必须在n天之内完成 否则影响收成 小布是果林的工作人员 他每次选择一片果林进行施肥 且一片果林施肥完后当天不再进行施肥作业 假设施肥机的能
  • uniapp适配支付宝,微信登录模块

    uniapp 微信 支付宝登录 1 获取手机号2 获取个人信息 头像 昵称
  • Scala中的对象

    1 Object 单例对象 定义 类似Java中的 静态对象 即定义在 object中的所有成员变量 和 方法都是静态的 eg 调用的话 类名 方法 或 类名 变量 直接调用 不用实例化类对象 可见 personId 是静态对象 每次会自动
  • 蓝桥杯2014年第五届真题-六角填数

    题目 如图所示六角形中 填入1 12的数字 使得每条直线上的数字之和都相同 图中 已经替你填好了3个数字 请你计算星号位置所代表的数字是多少 请通过浏览器提交答案 不要填写多余的内容 题解 全排列 暴力 当然也可以手算 总共12个数 填好了
  • gTest基本知识

    GoogleTest 1 gTest简介 gTest是google开发团队开发的一款针对C 代码的测试框架 可以帮助我们更快 更好地写出C 测试代码 gTest支持Linux Windows Mac等多个OS平台上运行 gTest不仅仅只支
  • 各大OJ

    著名OJ网址 中文OJ 任青网络在线测评系统RQNOJ http www rqnoj cn 高效信息学评测系统vijos http www vijos cn 2008 7 12复活 英文OJ 北京大学pku http acm pku edu
  • QT中回调函数与槽函数的区别

    1 什么是回调函数 什么是信号槽 回调函数是一个函数指针 即指向函数的指针 保存某个执行函数的地址 当其他人写的代码需要执行自己的程序 而又保证其他人的代码不能别修改 此时就产生了回调函数的概念 信号槽函数本质上也是一个回调函数 用于不同对
  • 转载:eclipse/g++多线程编译问题

    解决方法 https www jianshu com p 08b9634db3d7 tdsourcetag s pctim aiomsg
  • 代码审查:最佳实践

    不能低估代码审查在软件开发中的重要性 适当地进行代码审查不仅可以在早期阶段提高代码质量并识别潜在问题 还有助于培养开发人员的技能 但是 在大多数情况下 代码审查的意思是 只粗略地看一下所做的更改并提供一两个注释 没有多少人做详细和通过审查
  • Matlab遗传算法用于旅行商问题优化TSP

    Matlab遗传算法用于旅行商问题优化 要求 第一步 参数编码和初始群体设定 第二步 计算路径长度的函数设计 第三步 计算选择算子 第四步 计算交叉算子 第五步 计算变异算子 结果及分析 MATLAB总代码 要求 利用遗传算法求旅行商问题的
  • Erlang日期时间相关

    一 erlang now erlang now gt timestamp timestamp MegaSecs Secs MicroSecs MegaSecs Secs MicroSecs integer gt 0 BIF erlang n
  • Linux学习之Linux常用命令整理

    Linux常用命令 练习3遍以上 一 命令基本格式 1 命令格式 root 管理员 localhost 主机名 超级用户提示符 普通用户提示符是 adminis root一级目录用pwd print working directory 打印