1.只查看导出函数
|
1 |
$objdump -tT 7z.so |
2.查看更详细的二进制信息
|
1 |
$readelf -a 7z.so |
注意,使用readelf读取函数列表的时候,如果函数名比较长,可能会在显示的时候被截断,如果只查看导出函数,建议使用 objdump命令。
3.查看链接的库
|
1 |
$ldd 7z.so |
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
1.只查看导出函数
|
1 |
$objdump -tT 7z.so |
2.查看更详细的二进制信息
|
1 |
$readelf -a 7z.so |
注意,使用readelf读取函数列表的时候,如果函数名比较长,可能会在显示的时候被截断,如果只查看导出函数,建议使用 objdump命令。
3.查看链接的库
|
1 |
$ldd 7z.so |
MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。
安全散列算法(英语:Secure Hash Algorithm)是一种能计算出一个数位讯息所对应到的,长度固定的字串(又称讯息摘要)的算法。且若输入的讯息不同,它们对应到不同字串的机率很高;而SHA是FIPS所认证的五种安全散列算法。这些算法之所以称作“安全”是基于以下两点(根据官方标准的描述):“1)由讯息摘要反推原输入讯息,从计算理论上来说是很困难的。2)想要找到两组不同的讯息对应到相同的讯息摘要,从计算理论上来说也是很困难的。任何对输入讯息的变动,都有很高的机率导致其产生的讯息摘要迥异。
MD5 与 SHA1 是当前最常用的两种哈希算法。那在Linux下如何计算这两种哈希值呢,基本上所有的 Linux 发行版都内置了这两个命令,比如要校检的文件命为OurUnix.tar:
计算文件的 MD5 – md5sum
|
1 2 |
$ md5sum OurUnix.tar b9555cc1915652237948e37ccc9c484e OurUnix.tar |
计算文件的 SHA1 – sha1sum
|
1 2 |
$sha1sum OurUnix.tar bb7d67fb5776c2854edf35ec4a585ff8adc3dbda OurUnix.tar |
如果你使用 Linux 足够久,那么你自然知道一些工具的来与去。2009年 Debian 开发者邮件列表宣布放弃使用缺乏维护的 net-tools 工具包正是如此。到今天 net-tools 仍然被部分人们所使用。事实上,在 Ubuntu 14.10 中你依旧可以使用 ifconfig 命令来管理你的网络配置。
然而在某些情况下(例如, Ubuntu Docker 容器), net-tools 工具包将不会被默认安装,这就意味着不能使用 ifconfig 。尽管如此,还是可以用软件仓库来安装 net-tools 。
|
1 |
$ sudo apt-get install net-tools |
由于 net-tools 不再维护,我们强烈建议以 ip 命令代替 ifconfig。更重要的是 ip 在代替 ifconfig 的基础上表现得更好。
有趣的是 ip 不只是 ifconfig 的一个替代品,这两个命令在结构上有很多不同。即便如此,它们却都用于同一个目的。实际上 ip 命令可以完成下面所有事务。
接下来就让我们按上面说的试着用 ip 代替 ifconfig 。 我将例举一些简单的例子说明怎么使用 ip 命令。要正确使用并理解这些命令需要 root 权限,你可以用 su 切换到 root 用户或着使用 sudo 。因为这些命令将会改变你机器的网络信息。小心谨慎使用。
注意:演示中用的地址仅作演示,具体到你的计算机时,会由你的网络以及硬件而不一样。
接下来,开始吧!
多数人学习使用 ifconfig 做的第一件事就是查看网络接口上分配的 IP 地址。直接终端输入 ifconfig 不带任何参数回车即可看到。那么使用 ip 来做到这点我们只需要这样。
|
1 |
$ ip a |
这条命令将会列出所有网络接口的相关信息。
你说你只想看 IPv4 相关信息,那么可以这样。
|
1 |
$ ip -4 a |
你又说你想看特定的网络接口的相关信息,那么用如下命令查看无线网卡连接信息。
|
1 |
$ ip a show wlan0 |
你甚至可以定位更具体的信息,欲查看 wlan0 上的 IPv4 信息,那么可以这样。
|
1 |
$ ip -4 a show wlan0 |
还可以这样列出正在运行的网络接口。
|
1 |
$ ip link ls up |
接下来让我们来学习 ip 命令的核心功能——修改配置网络接口。假如你想为第一个以太网的网卡( eth0 )安排一个特定的地址。用 ifconfig 的话,看起来是这样的。
|
1 |
$ ifconfig eth0 192.168.1.101 |
那么用 ip 命令却是这样的。
|
1 |
$ ip a add 192.168.1.101/255.255.255.0 dev eth0 |
简短一点可以这样。
|
1 |
$ ip a add 192.168.1.101/24 dev eth0 |
显然这样的话,你需要知道你要安排的地址的子网掩码。
同样的方式,你可以这样删除一个网卡的地址。
|
1 |
$ ip a del 192.168.1.101/24 dev eth0 |
如果你想简单的清除所有接口上的所有地址,只需要这样即可。
|
1 |
$ ip -s -s a f to 192.168.1.0/24 |
ip 命令另一方面还能激活/禁用网络接口。
禁用 eth0
|
1 |
$ ip link set dev eth0 down |
激活 eth0
|
1 |
$ ip link set dev eth0 up |
使用 ip 命令,我们还可以添加/删除默认的网关,就像这样。
|
1 |
$ ip route add default via 192.168.1.254 |
如果你想获得网络接口的更多细节,你可以编辑传输队列,给速度慢的接口设置一个低值,给速度快的设置一个较高值。那么你需要像这样做。
|
1 |
$ ip link set txqueuelen 10000 dev eth0 |
该命令设置了一个很长的传输队列。你应该设置一个最适合你硬件的值。
还可以用 ip 命令为网络接口设置最大传输单元。
|
1 |
$ ip link set mtu 9000 dev eth0 |
一旦你做了改变,便可以使用 ip a list eth0 来检验是否生效。
其实还可以使用 ip 命令来管理系统路由表。这是 ip 命令非常有用的一个功能。并且你应该小心使用。
查看所有路由表。
|
1 |
$ ip r |
输出结果将像下图所示。
现在你想要路由的所有流量从 eth0 网卡的192.168.1.254网关通过,那么请这样做。
|
1 |
$ ip route add 192.168.1.0/24 dev eth0 |
删除这个路由。
|
1 |
$ ip route del 192.168.1.0/24 dev eth0 |
这篇文章仅仅对 ip 命令进行了一些介绍。不是要求你马上使用 ip 命令。你可以继续使用 ifconfig 。因为 ifconfig 的弃 用相当的慢,很多发行版里依旧默认安装了该命令。但是相信最终会逐步被 ip 命令完全取代。看过这篇介绍,到时候你便能很快的转换过去。如果你还想了解 更多 ip 命令的用法,请看 ip 命令的 man 手册。
在Windows 中使用Git的时候,习惯使用TortoiseGit来进行Git的管理。
TortoiseGit在提交代码的时候,使用Putty来实现SSH通信,Putty的Key文件为.ppk格式的文件,现在切换到Ubuntu之后,使用SmartGit来进行管理,而SmartGit 只支持OpenSSH 格式的Key文件,因此需要把Windows下面的.ppk文件转换为OpenSSH格式的文件。
具体操作如下所示:
|
1 2 |
$sudo apt-get install putty-tools $puttygen id_dsa.ppk -O private-openssh -o id_dsa |
然后指定生成的文件为Key文件,就可以正常使用了。
注意,命令中的转换参数全部为字母“O”,不是数字零“0”,只是前面是大写字符后面是小写字符。
SmartGit/HG 是一款开放源代码的、跨平台的、支持 Git 和 Mercurial 的 SVN 图形客户端,可运行在Windows、Linux 和 MAC OS X 系统上。可用的最新版本 SmartGit/HG 6.0.0,最近已发布。
Ubuntu及衍生系统用户安装,打开终端,使用以下命令:
|
1 2 3 4 5 |
$ sudo add-apt-repository ppa:eugenesan/ppa $ sudo apt-get update $ sudo apt-get install smartgit |
Debian 用户安装命令:
|
1 2 3 4 5 |
$ sudo apt-get install gdebi $ wget https://www.syntevo.com/downloads/smartgit/smartgit-18_2_7.deb $ sudo gdebi smartgit-18_2_7.deb |
卸载命令:
|
1 |
$ sudo apt-get remove smartgit |
硬盘是一个损耗设备,当使用一段时间后可能会出现坏道等物理故障。电脑硬盘出现坏道后,如果不及时更换或进行技术处理,坏道就会越来越多,并会造成频繁死机和数据丢失。最好的处理方式是更换磁盘,但在临时的情况下,应及时屏蔽坏道部分的扇区,不要触动它们。badblocks就是一个检查坏道位置的工具。
一、命令参数
badblocks使用格式为:
|
1 |
badblocks [ -svwnf ] [ -b block-size ] [ -c blocks_at_once ] [ -i input_file ] [ -o output_file ] [ -p num_passes ] [ -t test_pattern ] device [ last-block ] [ start-block ] |
参数含义是:
-b blocksize
指定磁盘的区块大小,单位为字节,默认值为“block 4K ”(4K/block)
-c blocksize
每个区块检查的次数,默认是16次
-f
强制在一个已经挂载的设备上执行读写或非破坏性的写测试操作
(我们建议先umount设备,然后再进行坏道检测。仅当/etc/mtab出现误报设备挂载错误的时候可以使用该选项)
-i file
跳过已经显示在file文件中的坏道,而不进行检测(可以避免重复检测)
-o file
把检测结果输出到file文件
-p number
重复搜寻设备,直到在指定通过次数内都没有找到新的坏块位置,默认次数为0
-s
在检查时显示进度
-t pattern
通过按指定的模式读写来检测区块。你可以指定一个0到ULONG_MAX-1的十进制正值,或使用random(随机)。
如果你指定多个模式,badblocks将使用第一个模式检测所有的区块,然后再使用下一个模式检测所有的区块。
Read-only方式仅接受一个模式,它不能接受random模式的。
-v
执行时显示详细的信息
-w
对每个区块都先写入,然后再从它读取信息
[device]
指定要检查的磁盘装置。
[last-block]
指定磁盘装置的区块总数。
[start-block]
指定要从哪个区块开始检查
二、示例
badblocks以4096的一个block,每一个block检查16次,将结果输出到“hda-badblocks-list”文件里
|
1 |
# badblocks -b 4096 -c 16 /dev/hda1 -o hda-badblocks-list |
"hda-badblocks-list”是个文本文件,内容如下:
引用
|
1 2 3 4 5 6 7 8 9 |
# cat hda-badblocks-list 51249 51250 51251 51253 51254 …… 61245 …… |
可以针对可疑的区块多做几次操作。下面,badblocks以4096字节为一个“block”,每一个“block”检查1次, 将结果输出到“hda-badblocks-list.1”文件中,由第51000 block开始,到63000 block结束
|
1 |
# badblocks -b 4096 -c 1 /dev/hda1 -o hda-badblocks-list.1 63000 51000 |
这次花费的时间比较短,硬盘在指定的情况下在很短的时间就产生“嘎嘎嘎嘎”的响声。由于检查条件的不同,其输出的结果也不完全是相同的。重复几次同样的操作,因条件多少都有些不同,所以结果也有所不同。进行多次操作后,直到产生最后的hda-badblock-list.final文件。
三、其他
1、fsck使用badblocks的信息
badblocks只会在日志文件中标记出坏道的信息,但若希望在检测磁盘时也能跳过这些坏块不检测,可以使用fsck的-l参数:
|
1 |
# fsck.ext3 -l /tmp/hda-badblock-list.final /dev/hda1 |
2、在创建文件系统前检测坏道
badblocks可以随e2fsck和mke2fs的-c删除一起运行(对ext3文件系统也一样),在创建文件系统前就先检测坏道信息:
|
1 |
# mkfs.ext3 -c /dev/hda1 |
代码表示使用-c在创建文件系统前检查坏道的硬盘。
这个操作已经很清楚地告知我们可以采用“mkfs.ext3 -c”选项用“read-only”方式检查硬盘。这个命令会在格式化硬盘时检查硬盘,并标出错误的硬盘“block”。用这个方法格式化硬盘,需要有相当大的耐心,因为命令运行后,会一个个用读的方式检查硬盘。
rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。
默认情况ubuntu安装了rsync服务,但在/etc下没有配置文件,一般情况可以copy示例文件到/etc下
|
1 |
$ sudo apt-get install rsync xinetd |
|
1 |
$ sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc |
查看内容,可以看到如下内容
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# sample rsyncd.conf configuration file # GLOBAL OPTIONS #motd file=/etc/motd #log file=/var/log/rsyncd # for pid file, do not use /var/run/rsync.pid if # you are going to run rsync out of the init.d script. # pid file=/var/run/rsyncd.pid #syslog facility=daemon #socket options= # MODULE OPTIONS [ftp] comment = public archive path = /var/www/pub use chroot = yes # max connections=10 lock file = /var/lock/rsyncd # the default for read only is yes... read only = yes list = yes uid = nobody gid = nogroup # exclude = # exclude from = # include = # include from = # auth users = # secrets file = /etc/rsyncd.secrets strict modes = yes # hosts allow = # hosts deny = ignore errors = no ignore nonreadable = yes transfer logging = no # log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes. timeout = 600 refuse options = checksum dry-run dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz |
|
1 |
$ sudo vim /etc/rsyncd.conf |
1.修改
|
1 |
path = /var/www/pub |
为需要同步的目录。
如果路径中存在空格,则要分两种情况处理,如果空格在路径中间,如"/nfs/Public/Shared Videos",则直接写
|
1 |
path = /nfs/Public/Shared Videos |
如果空格在路径的最后面,如"/nfs/Public/Shared Videos ",则需要如下形式设置,注意最后面的"\ ",是一个反斜杠加空格,否则最后的空格会被忽略。
|
1 |
path = /nfs/Public/Shared Videos\ |
2.设置可以登录的用户名,密码,修改
|
1 2 |
# auth users = # secrets file = /etc/rsyncd.secrets |
为
|
1 2 |
auth users = user secrets file = /etc/rsyncd.secrets |
配置用户名和密码
|
1 2 3 |
$ sudo vim /etc/rsyncd.secrets user:password |
赋予权限 rsyncd.secrets的权限必须为600
|
1 |
$ sudo chmod 600 /etc/rsyncd.secrets |
3.开启日志
|
1 |
#log file=/var/log/rsyncd |
为
|
1 |
log file=/var/log/rsyncd |
4.如果提示
|
1 |
rsync: change_dir "/" (in ftp) failed: Permission denied (13) |
则调整
|
1 2 |
uid = nobody gid = nogroup |
为
|
1 2 |
uid = root gid = root |
5.对于严格要求一致性的重要的文件,去掉"refuse options"中的"checksum",这样会导致同步变慢,但是会比较安全(已经有报告说当同步时候不校验MD5会出现文件大小一致但是MD5不正确的情况),这个需要客户端在同步的时候使用 "-c" 作为参数。
|
1 |
refuse options = dry-run |
|
1 |
$ sudo vim /etc/default/rsync |
修改
|
1 |
RSYNC_ENABLE=inetd |
创建 /etc/xinetd.d/rsync 通过xinetd使rsync开始工作
|
1 2 3 4 5 6 7 8 9 10 11 12 |
$ sudo vim /etc/xinetd.d/rsync service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID } |
启动/重启 xinetd
|
1 |
$ sudo /etc/init.d/xinetd restart |
运行下面的命令检查,确认rsync配置成功。
|
1 2 3 4 |
$ sudo rsync user@www.mobibrw.com::ftp Password: drwxr-xr-x 4096 2006/12/13 09:41:59 . drwxr-xr-x 4096 2006/11/23 18:00:03 folders |
|
1 2 3 4 5 |
$ sudo rsync -cvazu --progress user@www.mobibrw.com::ftp /rsync Password: receiving incremental file list ./ ................................... |
c同步完成后校验文件MD5(慢,但是可靠)
v详细提示
a以archive模式操作,复制目录、符号连接
z压缩
u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同步
--progress指显示进度
注意,如果需要为多个目录做独立的配置,可以参考如下配置(配置中设置了两个独立的同步目录"ftp"跟"movie")
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# sample rsyncd.conf configuration file # GLOBAL OPTIONS #motd file=/etc/motd log file=/var/log/rsyncd # for pid file, do not use /var/run/rsync.pid if # you are going to run rsync out of the init.d script. # pid file=/var/run/rsyncd.pid #syslog facility=daemon #socket options= # MODULE OPTIONS [ftp] comment = public archive path=/nfs/MyCloud use chroot = yes # max connections=10 lock file = /var/lock/rsyncd # the default for read only is yes... read only = yes list = yes uid = root gid = root # exclude = # exclude from =# hosts allow = # hosts deny = # include = # include from = auth users = user secrets file = /etc/rsyncd.secrets strict modes = yes # hosts allow = # hosts deny = ignore errors = no ignore nonreadable = yes transfer logging = no # log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes. timeout = 600 refuse options = dry-run dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz [movie] comment = public archive path= /nfs/Public/Shared Videos use chroot = yes # max connections=10 lock file = /var/lock/rsyncd # the default for read only is yes... read only = yes list = yes uid = root gid = root # exclude = # exclude from = # include = # include from = auth users = user secrets file = /etc/rsyncd.secrets strict modes = yes # hosts allow = # hosts deny = ignore errors = no ignore nonreadable = yes transfer logging = no # log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes. timeout = 600 refuse options = dry-run dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz |
1.创建脚本文件,假定文件在/home目录
|
1 2 3 4 |
$ vim rsync_backup.sh #!/bin/sh rsync -auvz --password-file=/home/rsyncd.secrets user@www.mobibrw.com::ftp /rsync |
2.赋予执行权限
|
1 |
$ chmod +x rsync_backup.sh |
3.创建密码文件,自动填写密码
|
1 2 3 |
$ vim /home/rsyncd.secrects password |
4.创建定时任务,每半小时自动检查备份一次
|
1 2 3 |
$ vim cron_rsync_backup */30 * * * * /home/rsync_backup.sh > /var/log/cron_rsync_backup.log 2>&1 |
|
1 |
$ crontab /home/cron_rsync_backup |
|
1 |
$ /etc/init.d/cron restart |
|
1 |
$ crontab -l |
最近发现网站总是被电信恶意添加了广告,导致链接总是各种异常,因此打算开启HTTPS来规避这种情况。本来以为很简单的,结果发现网上的各种不靠谱。
1.启用Apache自带的SSL模块
|
1 |
sudo a2enmod ssl |
2.激活Apache对于HTTPS的支持
|
1 |
sudo a2ensite default-ssl |
这一步骤其实就是把/etc/apache2/sites-available/default-ssl拷贝到了 /etc/apache2/sites-enabled/default-ssl,并且更改了一下文件权限
如果要取消对于HTTPS的支持 可以执行
|
1 |
sudo a2dissite default-ssl |
或者
|
1 |
sudo rm -rf /etc/apache2/sites-enabled/default-ssl |
3.强制Apache2 刷新配置
|
1 |
sudo service apache2 reload |
或者
|
1 |
sudo service apache2 restart |
这样便开启了Apache2 的HTTPS支持,此时输入https://www.mobibrw.com/就可以正常访问了。
但是此时使用的证书是在 /etc/apache2/sites-enabled/default-ssl中配置的默认的证书文件,内容如下:
|
1 2 3 4 5 6 7 8 |
# A self-signed (snakeoil) certificate can be created by installing # the ssl-cert package. See # /usr/share/doc/apache2.2-common/README.Debian.gz for more info. # If both key and certificate are stored in the same file, only the # SSLCertificateFile directive is needed. SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key |
如果要替换成自己的证书文件,只要修改 SSLCertificateFile 跟SSLCertificateKeyFile就可以了。
上面使用的例子的证书格式是.pem格式的,如果是.csr格式的只要是Base64编码格式的(记事本打开之后,首行是"-----BEGIN CERTIFICATE-----"),跟上面的例子相同,直接设置就可以了。以申请到的沃通的免费证书为例子:
申请完成后的证书ZIP文件中有一个for Apache.zip的压缩包,解压缩之后,上传到服务器,然后直接如下设置就可以了:
|
1 2 3 4 5 6 7 8 |
# A self-signed (snakeoil) certificate can be created by installing # the ssl-cert package. See # /usr/share/doc/apache2.2-common/README.Debian.gz for more info. # If both key and certificate are stored in the same file, only the # SSLCertificateFile directive is needed. SSLCertificateFile /etc/apache2/certs/wosign.csr SSLCertificateKeyFile /etc/apache2/certs/wosign.key |
至于其他的配置,跟/etc/apache2/sites-enabled/000-default中的一致就可以了。
安装 Ubuntu 等 Linux 发行版之后,开机后会出现 Grub 启动菜单用于选择需要进入的操作系统。如果我们需要对 Grub 启动菜单进行修改,除了传统的修改文本配置文件的方法之外,还可以使用图形设置工具 Grub Customizer 进行设置。
Grub Customizer 可以通过 PPA 安装,启动终端依次输入以下命令即可:
|
1 2 3 |
sudo add-apt-repository ppa:danielrichter2007/grub-customizer sudo apt-get update sudo apt-get install grub-customizer |
启动 Grub Customizer,主界面如下图所示:
在 Grub Customizer 的主界面中,我们可以调整启动项的位置(使用工具栏的向上向下箭头按钮),还可以通过启动项前的复选框控制该启动项是否可见,我们可以通过这种方法隐藏多 余的 Linux 内核选项。如果去除某一类别中“新条目”的复选框,还可以“冻结”该类别,自动探测的新条目将不会被添加到这一类别。
点击工具栏的“首选项”按钮,在此我们可以对 Grub 启动菜单进行进一步定制。
首先是常规标签页,在此我们可以设置 Grub 启动菜单的默认启动项、是否显示菜单、等待时间等等。
然后是外观标签页,在此对 Grub 启动菜单的外观进行定制,如调整分辨率、设置背景等等。
最后是高级标签页,如果你不了解这些选项的意义,请不要随便修改。
设置完成之后记得点击工具栏的“保存”按钮保存设置。
平常Linux管理方面最重要的任务之一就是,检查文件系统的完整性。Linux文件系统有可能在各种各样的情况下受到损坏,比如系统崩溃、突然断电、磁盘断开,或者文件节点(i-node)不小心被覆盖等等。因此,定期检查文件系统的完整性是个好主意,以便尽量减小文件系统受到损坏的风险。而说到检查和修复Linux文件系统,fsck是一款实用的工具。
我在本教程中将介绍如何借助fsck工具,实现文件系统的自动检查。
系统一启动,就触发文件系统自动检查机制
如果你希望系统一启动,就自动触发fsck,那么有一些方法可以设置在启动过程中实现无人值守的fschk,这些方法具体取决于特定的Linux发行版。
在Debian、Ubuntu或Linux Mint上,编辑/etc/default/rcS,如下所示。
|
1 |
$ sudo vi /etc/default/rcS |
# 启动过程中,自动修复出现不一致性的文件系统
|
1 |
FSCKFIX=yes |
在CentOS上,使用下列内容,编辑/etc/sysconfig/autofsck(要是它没有,就创建)。
|
1 2 |
$ sudo vi /etc/sysconfig/autofsck AUTOFSCK_DEF_CHECK=yes |
强制定期检查文件系统
如果文件系统很庞大,你可以强制定期检查文件系统,而不是每次系统启动时检查文件系统。为了实现这个操作,先要借助tune2fs命令,找到文件系统配置。下面这个命令行显示了文件系统相关参数的当前值。请注意:/dev/sda1是文件系统超级块所在的分区。
|
1 |
$ sudo tune2fs -l /dev/sda1 |
从tune2fs的输出结果中,我们不仅可以看到文件系统的状态(干净与否),还可以看到与文件系统检查有关的一些参数。"Maximum mount count"(最大挂载次数)这个参数是指文件系统检查被触发后的挂载次数。"Check interval"(检查时间间隔)这个参数显示了两次文件系统检查之间的最长时间。在大多数Linux发行版上,这些参数并不是默认情况下被设置的,这意味着并不进行任何定期的文件系统检查。
如果想强制每隔30次挂载就检查文件系统,请运行下面这个命令。
|
1 |
$ sudo tune2fs -c 30 /dev/sda1 |
如果想强制每隔3个月就检查文件系统,请使用下面这个命令。
|
1 |
$ sudo tune2fs -i 3m /dev/sda1 |
现在确认刚添加上去的文件系统检查条件已正确设置。
|
1 2 3 4 5 6 7 8 9 |
$ sudo tune2fs -l /dev/sda1 . . . Last mount time: n/a Last write time: Fri Mar 14 22:29:24 2014 Mount count: 20 Maximum mount count: 30 Last checked: Mon Mar 3 20:55:08 2014 Check interval: 7776000 (3 months) Next check after: Sun Jun 1 21:55:08 2014 |
强制下一次系统重启时,进行一次性的文件系统检查
如果你想在下一次系统重启时触发一次性的文件系统检查,可以使用这个命令。
|
1 |
$ sudo touch /forcefsck |
一旦你在类似上面的顶层目录(/)中创建了一个名为forcefsck的空文件,它就会在你下一次重启时,强制进行文件系统检查。系统成功启动后,/forcefsck则会自动被清除。