为您找到与linux系统拷贝文件到u盘相关的共200个结果:
copy意为复制、摹本。拷贝有四种解释:①是一个计算机系统的DOS命令,意为“复制”,是一个新名词,广泛地应用于IT的各个领域,那么怎么把Linux系统的文件拷贝到U盘呢?小编为大家分享了拷贝Linux系统的文件到U盘的解决方法,下面大家跟着读文网小编一起来了解一下吧。
把U盘插入Linux电脑,确保U盘指示灯是亮着的
进入Linux系统主界面,按Ctrl+Alt+T打开命令窗口
先获取高级用户权限
输入命令:sudo -i
确定后输入高级用户密码
首先使用fdisk -l命令查看一下U盘是否有被识别到,及识别的U盘是在哪个位置
本次接入看到U盘的位置是/dev/Sdb4
输入挂载U盘命令:mount /dev/sdb4 /mnt
回车后即挂载U盘成功
继续输入:cd 回车,可以查看U盘下的文件
现拷贝桌面上的1.png文件到U盘中
输入命令:cp /home/user/desktop/1.png /mnt
回车后等待复制完成
拷贝完成后,需要退出U盘
输入命令:umount /mnt
注意事项
必须要先确定U盘的位置
看过“ 怎么把Linux系统的文件拷贝到U盘 ”
浏览量:2
下载量:0
时间:
在linux中查看与修改文件权限我们都必须使用命令来操作,不能像windows一样点几下就好了,那么linux系统怎么查看及修改文件读写权限设置?接下来大家跟着读文网小编一起来了解一下linux系统查看及修改文件读写权限设置的解决方法吧。
查看文件权限的语句:
在终端输入:
ls -l xxx.xxx (xxx.xxx是文件名)
那么就会出现相类似的信息,主要都是这些:
-rw-rw-r--
一共有10位数
其中: 最前面那个 - 代表的是类型
中间那三个 rw- 代表的是所有者(user)
然后那三个 rw- 代表的是组群(group)
最后那三个 r-- 代表的是其他人(other)
然后我再解释一下后面那9位数:
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
- 表示相应的权限还没有被授予
现在该说说修改文件权限了
在终端输入:
chmod o+w xxx.xxx
表示给其他人授予写xxx.xxx这个文件的权限
chmod go-rw xxx.xxx
表示删除xxx.xxx中组群和其他人的读和写的权限
其中:
u 代表所有者(user)
g 代表所有者所在的组群(group)
o 代表其他人,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
其中:rwx也可以用数字来代替
r ------------4
w -----------2
x ------------1
- ------------0
行动:
+ 表示添加权限
- 表示删除权限
= 表示使之成为唯一的权限
当大家都明白了上面的东西之后,那么我们常见的以下的一些权限就很容易都明白了:
-rw------- (600) 只有所有者才有读和写的权限
-rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx------ (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx--x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限
看过“linux系统怎么查看及修改文件读写权限设置”
浏览量:2
下载量:0
时间:
每个人都有读写和执行的权限 Linux文件和目录访问权限设置使用chmod和数字改变文件或目录的访问权限文件和目录的权限表示,那么大家知道怎么查看及修改Linux系统文件读写权限吗?接下来大家跟着读文网小编一起来了解一下查看及修改Linux系统文件读写权限的解决方法吧。
查看权限命令
查看目录的相关权限可以采用命令ls -lD,或者直接用ls -la
如
ls -l www.jb51.net https://这里表示查看www.jb51.net目录
修改权限命令
chmod 777 文件名
1.chmod 577 /home/stuser -R
2.umask -p 0200
3.chown XXXX YYYY (XXXX 为用户名 YYYY为文件名)
权限列表
-rw------- (600) 只有所有者才有读和写的权限
-rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx------ (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx--x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限
查看文件权限的语句:
在终端输入:
ls -l xxx.xxx (xxx.xxx是文件名)
那么就会出现相类似的信息,主要都是这些:
-rw-rw-r--
一共有10位数
其中: 最前面那个 - 代表的是类型
中间那三个 rw- 代表的是所有者(user)
然后那三个 rw- 代表的是组群(group)
最后那三个 r-- 代表的是其他人(other)
然后我再解释一下后面那9位数:
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
- 表示相应的权限还没有被授予
现在该说说修改文件权限了
在终端输入:
chmod o+w xxx.xxx
表示给其他人授予写xxx.xxx这个文件的权限
chmod go-rw xxx.xxx
表示删除xxx.xxx中组群和其他人的读和写的权限
其中:
u 代表所有者(user)
g 代表所有者所在的组群(group)
o 代表其他人,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
其中:rwx也可以用数字来代替
r ------------4
w -----------2
x ------------1
- ------------0
行动:
+ 表示添加权限
- 表示删除权限
= 表示使之成为唯一的权限
当大家都明白了上面的东西之后,那么我们常见的以下的一些权限就很容易都明白了:
-rw------- (600) 只有所有者才有读和写的权限
-rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx------ (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx--x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限
看过“怎么查看及修改Linux系统文件读写权限”
浏览量:2
下载量:0
时间:
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。那么Linux怎么使用JFS文件系统呢?今天读文网小编与大家分享下Linux使用JFS文件系统的具体操作步骤,有需要的朋友不妨了解下。
JFS是IBM公司为linux系统开发的一个日志文件系统。从IBM的实力及它对Linux的态度来看,JFS应该是未来日志文件系统中最具实力的一个文件系统。
JFS提供了基于日志的字节级文件系统,该文件系统是为面向事务的高性能系统而开发的。JFS 能够在几秒或几 分钟内就把文件系统恢复到一致状态。JFS能够保证数据在任何意外宕机的情况下,不会造成磁盘数据的丢失与损坏。
一、JFS文件系统特点
1.存储空间更大
JFS 支持的最小文件系统是 16M 字节。最大文件系统的大小为 512 万亿字节(TB)。JFS 是真正意义上的 64 位的文件系统。所有 JFS 文件系统结构化字段都是 64 位大小。
2.动态磁盘 inode 分配
JFS 按需为磁盘 inode 动态地分配空间,释放不再需要的空间。这种方式避开了在文件系统创建期间,为磁盘 inode 保留固定数量空间的传统方法。用户不需要考虑文件系统包含的文件和目录最大数目。
3.基于盘区的寻址结构
JFS 使用基于盘区的寻址结构,JFS 分配尝试通过分配最小数量的盘区策略,而使每个盘区尽可能大。这有利于大的 I/O 传送,磁盘读写性能所有提高。
4.块尺寸可变
JFS 支持 512、1024、2048 和 4096 字节的块尺寸,允许用户根据应用环境优化空间利用率。较小的块尺寸减少有利于内部存储碎片的数量,提高空间利用率。系统缺省块尺寸为 4096 字节。
二、使用JFS文件系统
1.编译内核以支持JFS文件系统
首先下载最新的2.4.x 核心,然后下载JFS系统软件包,名称为:jfs-x.y.z-patch.tar.gz。 将下载文件存放在/usr/src目录中。
在/usr/src/上当目录下解开jfs的软件包
# tar –zxvf jfs-2.4-1.0.4.tar.gz
# tar –zxvf jfs-2.4-1.0.4-patch.tar.gz
得到四个文件:
jfs-2.4.common-v1.0.4-patch
jfs-2.4.7-v1.0.4-patch
jfs-2.4.5-v1.0.4-patch
jfs-2.4.0-v1.0.4-patch
其中,jfs-2.4.common-v1.0.4-patch文件用于所有的2.4核心,jfs-2.4.0-v1.0.4-patch用于2.4.0-2.4.2。jfs-2.4.5-v1.0.4-patch可用于核心2.4.5及2.4.6。
注意仔细阅读README文件,不要用错了patch文件
接着是为核心打补丁:
# patch –p1 < jfs-2.4.5-v1.0.4-patch
打补丁工作完成。
最后运行
#make menuconfig
将新的文件系统加入了核心编译配置文件中,要进行以下内核配置:
使用make menuconfig 在菜单"Code maturity level options"中,选择"Prompt for development and/or incomplete code/drivers."选项。然后,进入文件系统菜单"File systems",选择"JFS filesystem support."选项。配置核心,使核心支持JFS文件系统。配置核心的其它选项。
<*> JFS filesystem support
##将JFS文件系统的支持编译入内核,也可以将其编译成模块加载方式,见以下选择:
JFS filesystem support
笔者建议将JFS文件系统支持直接编译进内核,这有利于提高系统性能。
然后编译核心:
#make dep
#make clean
#make bzImage
#make modules
#make modules_install
#cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.5-jfs
最后,编辑 /etc/lilo.conf 文件,加入新内核条目,以便使用新的内核引导系统。如下所示,在 lilo.conf文件中加入以下几行内容:
image=/boot/vmlinuz-2.4.5-jfs
label=jfs
read-only
root=/dev/hda5
然后运行lilo,使更改生效。
#lilo
三、创建JFS文件系统
1.查看系统对JFS文件系统的支持
如果新的内核正确启动,这说明核心已支持JFS文件系统了。查看系统进程,可以看到以下进程:
#lsmod
7 ? SW 0:00 [jfsIO]
8 ? SW 0:00 [jfsCommit]
9 ? SW 0:00 [jfsSync]
如果你看到了以上这几个进程,这表明系统核心已支持JFS文件系统。
另外,在/proc/fs/jfs 目录下应该还有三个文件:
jfsFYI
logmgr
TxAnchor
2.下载编译JFS文件系统工具
为了使用JFS文件系统,我们还需要创建文件系统的工具,到IBM的JFS网站下载相应工具jfsutils-1.0.7.tar.gz软件包。
编译安装过程如下:
#tar –zxvf jfsutils-1.0.7.tar.gz
#cd jfsutils-1.0.7
#./configure
#make
#make install
安装完成后,在/usr/sbin中就多出一个 可执行文件mkfs.jfs,我们就用它将分区格式化成jfs文件系统。
3.创建JFS文件系统
以下开始创建一个JFS文件系统, 将hda6分区格式化成JFS文件系统,以下为格式化时显示的内容:
#mkfs -t jfs /dev/hda6
mkfs.jfs development version: $Name: v0_3_1 $
Warning! All data on device /dev/hda6 will be lost!
Continue? (Y/N) y
Format completed successfully.
5120608 kilobytes total disk space.
运行完成后,JFS文件系统已经在hda6分区创建完成了。
4.加载JFS文件系统
首先,创建一个目录jfs,以便将JFS文件系统mount到其上:
#mkdir jfs
将新的分区mount到jfs目录下:
#mount –t jfs /dev/hda6 /jfs
这样,新的文件系统就加载到/jfs目录下了。现在可以使用新的文件系统了。
四、使用JFS文件系统
1.普通分区使用JFS文件系统
Linux内核支持了JFS文件系统后,可以将磁盘所有分区均格式化为JFS文件系统。通常情况下,建议/usr,/usr/sbin等分区采用非日志文件系统,而在那些对读写要求频繁的分区上使用JFS文件系统。这有利于提高系统性能。
2.主引导区使用JFS文件系统
主分区为linux的启动分区,其中存放了系统启动所需的基本文件。以下开始将JFS文件系统用于主分区,首先备份主分区上的所有常用文件目录:
#cd /
#cp -a bin etc lib boot dev home usr var [...] /jfs
#mkdir /jfs/proc
在使用JFS文件系统启动之前,还应该更改/etc/fstab文件,将相应的分区用作根分区。如下所示:原来的根分区为:
LABEL=/ / ext2 defaults 1 1
应该更改为:
/dev/hda6 / jfs defaults 1 1
然后,编译/etc/lilo.conf文件,将主引导分区更改为/dev/hda6。置label为jfs,将缺省的启动设置为jfs。
如下所示:
default=jfs
...
image=/boot/vmlinuz-2.4.0-jfs
label=jfs
read-only
root=/dev/hda6
然后,运行lilo,完成。
最后,reboot 系统,启动之后,你就得到一个纯jfs文件系统的linux环境了,剩下的事情就是将原来的主分区重新格式化成 jfs,然后再将其mount到主分区的某个目录下就行了。
看过“Linux怎么使用JFS文件系统”
浏览量:5
下载量:0
时间:
用一个很简单的命令就可以实现linux系统之间互传文件功能。这个命令就是scp, 它可以在 2个 linux 主机间复制文件,那么怎么利用scp命令来实现linux系统之间互传文件呢?今天读文网小编与大家分享下怎么利用scp命令来实现linux系统之间互传文件的解决方法,有兴趣的朋友不妨了解下。
SCP(secure copy)是Linux下一个跨主机拷贝工具,使用方法很简单
近来要做linux主机的P2V操作(物理主机转虚拟机)不知道是我操作有问题还是安装的Linux有问题还是Vmware的这个Convert有问题,总之就是不让我完成这个转换,无奈之下,只好自己动手进行部署咯,可是真实主机上有大约40G的数据要向虚拟机进行迁移,Google了一下,发现了基于SSH的一个很好很强大的命令SCP.
SCP(secure copy)是Linux下一个跨主机拷贝工具,使用方法很简单,而且传输的数据也是经过SSH加密的数据,很安全,而且直连互传速度也相当快,语法也很简洁,如现在SSH上A机,要将B机/etc下面的kaisir.tar.gz文件拷贝到A机的/home下面,则仅仅需要输入:
scp root@A:/etc/kaisir.tar.gz /home
这样就能快速安全的完成复制了,但是也有一点缺陷,就是没有办法完成像FTP的FXP那样的不需用户参与的对传操作
看过“怎么利用scp命令来实现linux系统之间互传文件”
浏览量:2
下载量:0
时间:
Linux有一个rm命令(rmdir也可以在rm里现实),不过只是简单删除,这个srm命令全称是secrue rm,是安全移出的意思,那么Linux系统怎么彻底删除文件呢?今天读文网小编与大家分享下Linux系统怎么彻底删除文件的解决方法,有兴趣的朋友不妨了解下。
linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可。
直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字
删除目录、文件 rm(remove)
功能说明:删除文件或目录。
语法:rm [-dfirv][--help][--version][文件或目录。。.]
补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数”-r”,否则预设仅会删除文件。
参数:
-d或–directory 直接把欲删除的目录的硬连接数据删成0,删除该目录。
-f或–force 强制删除文件或目录。
-i或–interactive 删除既有文件或目录之前先询问用户。
-r或-R或–recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-v或–verbose 显示指令执行过程。
1 删除文件夹
de》rm -rf fileNamede》
-删除文件夹实例:
rm -rf /var/log/httpd/access
将会删除/var/log/httpd/access目录以及其下所有文件、文件夹
需要提醒的是:使用这个rm -rf的时候一定要格外小心,linux没有回收站的
2 删除文件
de》rm -f fileNamede》
使用 rm -rf 的时候一定要格外小心,linux没有回收站的
删除指定文件之外的其他文件
一、Linux下删除文件和文件夹常用命令如下:
删除文件: rm file
删除文件夹: rm -rf dir
需要注意的是, rmdir 只能够删除 空文件夹。
二、删除制定文件(夹)之外的所有文件呢?
1、方法1,比较麻烦的做法是:
复制需要保留的文件到其他文件夹,然后将该目录删除, 然后将需要保留的移动 回来。
mv keep 。。/ #保留文件(夹) keep
rm -rf * #删除当前文件夹里的所有文件
mv 。。/keep 。/ #将原来的东西移动回来
2、方法2,需要在当前文件夹中进行:
rm -rf !(keep) #删除keep文件之外的所有文件
rm -rf !(keep1 | keep2) #删除keep1和keep2文件之外的所有文件
Linux中彻底删除文件
shred彻底删除文件的方法:
$ shred -u file
shred会用一些随机内容覆盖文件所在的节点和数据块,并删除文件(-u参数)。
如果想清除的更彻底一点可以加-z 参数,意思是先用随机数据填充,最后再用0填充。
$ shred -u -z file
另外shred还可以清除整个分区或磁盘,比如想彻底清除/dev/sdb1分区的内容可以这样:
$ shred /dev/sdb1 (注意不要加-u参数)
shred的详细参数:
-f, --force 更改权限允许写入(如有必要)
-n, --iterations=N 重写N次,默认为3次
--random-source=FILE 从指定文件读取数据
-s, --size=N 将文件粉碎为固定大小 (可使用后缀如K、M、C等)
-u, --remove 重写后截短并移除文件
-v, --verbose 显示进度
-z, --zero - add 用0覆盖数据
–help 显示帮助
–version 显示版本信息
上面就是Linux下彻底删除文件的方法介绍了,需要特别注意的是,因为Linux没有回收站,在使用彻底删除的时候要特别小心,rm -rf命令不可随意乱用。
看过“Linux系统怎么彻底删除文件”
浏览量:2
下载量:0
时间:
linux系统怎么添加计划任务执行php文件?PHP不支持多线程,有时候处理问题不是那么爽,读文网小编以php文件为例,讲解linux下的计划任务。
1.打开linux系统命令行界面。
在命令行界面中输入如下命令:which php,回车。
1.记住上一步的php路径,继续在命令行下输入:crontab -e,回车,按下“i”键进入vi编辑器的编辑模式,在当前模式下输入如下命令:
10,40,50 * * * * /usr/bin/php /opt/lampp/htdocs/wechat/xjtest-web_browser/pcntl_test.php
即:计划任务执行频率+php可执行文件路径+要执行的php文件路径。(文章最后会详细解释命令开始的执行频率)
输入完成后,按下“ESC”键并在当前命令行输入“:”,在“:”后输入“wq”,再回车,出现如下提示,证明计划任务添加成功。
Linux计划任务的执行频率:
命令开始部分的频率,由五个部分组成,分别代表分钟、小时、日、月、星期(0是星期日)。当前频率全部执行时,用“*”表示,所以才会出现这么多“*”。下面的例子,可以帮助大家理解:
下面的计划任务会一直运行
* * * * * [command]
下面的计划任务会在每个小时的0分时运行(就是每小时执行一次)
0 * * * * [command]
下面依旧是一个每小时运行一次的计划任务。不过是在每个小时的一刻钟时运行的(1:15,2:15.。。)
15 * * * * [command]
下面的计划任务每天执行一次,在2:30分
30 2 * * * [command]
下面的计划任务是在每个月2号的午夜执行(比如:2010年2月2日00:00)
0 0 2 * * [command]
下面的计划任务会在每周一的每个小时0分钟时执行一次
0 * * * 1 [command]
下面的会每小时运行3次,在0分,10分,和20分时
0,10,20 * * * * [command]
下面是用除号“/”表示每多少运行一次。本例是每5分钟运行一次
*/5 * * * * [command]
还可以用“-”表示一个范围,如下表示5到10点的每个整点运行一次
0 5-10 * * * [command]
另外还有一个特殊的时间关键字“@reboot”,就是每次重启服务器时运行计划任务
@reboot [command]
看过“linux系统怎么添加计划任务执行php文件”
浏览量:2
下载量:0
时间:
Scp在主机间复制文件。他使用 ssh(1)作为数据传输。而且用同样认证和安全性。那么linux scp怎么远程拷贝文件呢?今天读文网小编与大家分享下linux scp远程拷贝文的解决方法,有兴趣的朋友不妨了解下。
scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录
scp命令的用处:
scp在网络上不同的主机之间复制文件,它使用ssh安全协议传输数据,具有和ssh一样的验证机制,从而安全的远程拷贝文件。
scp命令基本格式:
scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2
scp命令的参数说明:
-1
强制scp命令使用协议ssh1
-2
强制scp命令使用协议ssh2
-4
强制scp命令只使用IPv4寻址
-6
强制scp命令只使用IPv6寻址
-B
使用批处理模式(传输过程中不询问传输口令或短语)
-C
允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p 保留原文件的修改时间,访问时间和访问权限。
-q
不显示传输进度条。
-r
递归复制整个目录。
-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher
以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config
指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file
从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit
限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option
如果习惯于使用ssh_config(5)中的参数传递方式,
-P port 注意是大写的P, port是指定数据传输用到的端口号
-S program
指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
scp命令的实际应用
1>从本地服务器复制到远程服务器
(1) 复制文件:
命令格式:
scp local_file remote_username@remote_ip:remote_folder
或者
scp local_file remote_username@remote_ip:remote_file
或者
scp local_file remote_ip:remote_folder
或者
scp local_file remote_ip:remote_file
第1,2个指定了用户名,命令执行后需要输入用户密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名
第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名
实例:
scp /home/linux/soft/scp.zip root@www.mydomain.com:/home/linux/others/soft
scp /home/linux/soft/scp.zip root@www.mydomain.com:/home/linux/others/soft/scp2.zip
scp /home/linux/soft/scp.zip www.mydomain.com:/home/linux/others/soft
scp /home/linux/soft/scp.zip www.mydomain.com:/home/linux/others/soft/scp2.zip
(2) 复制目录:
命令格式:
scp -r local_folder remote_username@remote_ip:remote_folder
或者
scp -r local_folder remote_ip:remote_folder
第1个指定了用户名,命令执行后需要输入用户密码;
第2个没有指定用户名,命令执行后需要输入用户名和密码;
例子:
scp -r /home/linux/soft/ root@www.mydomain.com:/home/linux/others/
scp -r /home/linux/soft/ www.mydomain.com:/home/linux/others/
上面 命令 将 本地 soft 目录 复制 到 远程 others 目录下,即复制后远程服务器上会有/home/linux/others/soft/ 目录
2>从远程服务器复制到本地服务器
从远程复制到本地的scp命令与上面的命令雷同,只要将从本地复制到远程的命令后面2个参数互换顺序就行了。
例如:
scp root@www.mydomain.com:/home/linux/soft/scp.zip /home/linux/others/scp.zip
scp www.mydomain.com:/home/linux/soft/ -r /home/linux/others/
linux系统下scp命令中很多参数都和 ssh1 有关 , 还需要看到更原汁原味的参数信息,可以运行man scp 看到更细致的英文说明.
看过“linux scp怎么远程拷贝文件”
浏览量:2
下载量:0
时间:
Linux不正常关机,有时候再次启动时会报文件系统损坏,如何修复文件?下面大家与读文网小编一起来学习一下吧。
修复文件系统 | Repaire filesystem
1、重启系统系统时,Linux系统提示“contains a file system with errors”,并自动扫描并尝试修复错误。
2、当自动修复失败时,提示你输入root用户的密码进行手动修复或者按Ctrl+D继续。在这种情况下,按Ctrl+D是没有用的,检查一会儿系统会继续回到当前的界面。
3、输入root用户的密码,按回车。系统出现“(Repair filesystem) 1 #”的提示符。现在可以执行root用户的权限,运行所有的命令。
4、首先用 “fdisl -l” 查看磁盘设备。
5、找到需要修复的设备后,执行命令“fsck -y /dev/sda2”。
说明:/dev/sda2 是我需要修复的设备。
6、总共会进行5个步骤,执行时间和设备中文件数据的大小有关系。在我的机器上,30GB的文件数据共了约20分钟进行修复。修复完成后,会出现提示“FILE SYSTEM WAS MODIFIED”。这时输入命令 "reboot" 命令重启系统。
<正文结束>
看过“ linux 文件系统修复 ”
浏览量:3
下载量:0
时间:
下面读文网小编来给大家整理一些在linux中根目录中一些文件说明了,希望文章能各位会带来帮助哦。
bin: 包含常用的Linux用户命令,例如,ls、sort、date和chmod。
/boot: 包含可引导的Linux内核和引导装载(boot loader)配置文件(GRUB)。
/dev: 包含代表系统设备访问点的文件。这包括终端设备(tty*)、软盘(fd*)、硬盘(hd*)、RAM(ram*)和CD-ROM(cd*)(用户通常通过设备文件直接访问这些设备)。
/etc:包含管理配置文件。
/home: 包含分配给每个拥有登陆帐号用户的目录。
/media:提供挂载(mounting)和自动挂载设备的标准位置,如远程文件系统和可移动介质(目录名为cdrecorder、floppy等)。
/mnt: 在被标准的/media目录替代前,这是很多设备常用的挂载点。某些可引导的Linux系统仍旧使用该目录来挂载硬盘分区和远程文件系统。
/proc:包含有关系统资源的信息。
/root:表示根用户的主目录。
/sbin:包含管理命令和守护进程。
/sys:一个类似与/proc的文件系统,在Linux2.6内核中最新出现的,包含的文件用于获得硬件状态并反映内核看到的系统设备树。它使用了/proc中的很多帮助。
/tmp:包含应用程序使用的临时文件。
/usr:包含用户文档、游戏、图形文件(X11)、库(lib),以及各种其他用户和管理命令及文件。
/var:包含不同应用程序使用的数据目录。特别要注意的是,这里放置作为FTP服务器(/var/ftp)成Web服务器(/var/www)共享文件。它还包含所有系统日志文件(/var/log)。
Linux文件系统与基于Windows的文件系统
尽管很多方面相似,但是Linux文件系统与MS-DOS和Windows操作系统所用的文件系统还是有一些显著的差别。下面列出了其中的一些差别:
1 在MS-DOS和Windows文件系统中,驱动器盘符表示不同的存储设备(例如,A:是软驱,C:是硬盘)。在Linux中,所有的存储设备都被置于文 件系统层次结构中。因此所有/usr可能在单独的硬盘上,或者/mnt/reml是其他计算机上的文件系统,这对用户完全是隐藏的。
2 斜线(不是反斜线)用于分隔Linux中的目录名。所以在MS系统中的C:homechris在Linux系统中是/home/chris。
3 在DOS中文件名几乎总是有后缀(如用于文本文件的.txt或者用于字处理文件的.doc)。虽然有时可以在Linux中使用该约定,但是3字符的后缀在 Linux中已经没有所需的含义。识别文件类型时它们很有用。很多Linux应用程序和桌面环境都使用文件后缀来确定文件的内容。
4 Linux文件系统中的所有文件和目录都有与之关联的许可和所有权。Microsoft各系统之间的安全性则有所不同。因为DOS和MS Windows开始是用于单用户的系统,所以设计这些系统时并没有在系统中内建文件所有权。后续的版本添加了一些功能(如文件和文件夹属性)来解决该问题。
看过“ linux中系统中根目录文件夹中文详解 ”
浏览量:3
下载量:0
时间:
系统备份是系统管理工作中十分重要的一个环切,备份是一项重要的工作,但是很多人没有去做。那么如何备份linux系统呢?下面跟着读文网小编一起来了解一下吧。
如果Linux计算机只有一个使用者,可以一个星期或一个月对整个系统备份一次。如果有关键性的文件,就应该有计划地把这些文件拷贝到一个可移动的磁盘中。
备份之前,首先要确保正确地设置备份设备。大多数磁带备份系统在安装时可以发现是否正确。系统启动后,打开一个终端窗口并且输入下面的命令:
$dmeg | less
滚动列表,并从中寻找你的磁带系统的驱动。如果没有发现,就需要加载一个组件驱动程序。
如果运行Linux服务器,就要制定一个备份计划,但这并不意味着每天要对所有的东西都备份。系统中只有一部分东西需要每天备份,下面先介绍下目录结构及备份策略:
目录结构:
/etc
包含所有核心配置文件。这其中包括网络配置、系统名称、防火墙规则、用户、组,以及其他全局系统项。
/var
包含系统守护进程(服务)所使用的信息,包括 DNS 配置、DHCP 租期、邮件缓冲文件、HTTP 服务器文件、db2 实例配置,等等。
/home
包含所有用户的默认用户主目录。这包括他们的个人设置、已下载的文件和用户不希望失去的其他信息。
/root
是根(root)用户的主目录。
/opt
是安装许多非系统文件的地方。IBM 软件就安装在这里。OpenOffice、JDK 和其他软件在默认情况下也安装在这里。
有些目录是应该考虑不 备份的。
1. /proc
应该永远不要备份这个目录。它不是一个真实的文件系统,而是运行内核和环境的虚拟化视图。它包括诸如 /proc/kcore 这样的文件,这个文件是整个运行内存的虚拟视图。备份这些文件只是在浪费资源。
2. /dev
包含硬件设备的文件表示。如果计划还原到一个空白的系统,那就可以备份 /dev。然而,如果计划还原到一个已安装的 Linux 系统,那么备份 /dev 是没有必要的。
备份策略:
用户文件:每天都要对/home目录中的用户文件进行备份。
配置文件:/etc和/var目录中的配置文件不需要频繁备份,每个星期或每月备份一次即可,主要取决于配置更改的频繁程度。
程序文件:/usr和/opt目录中的程序文件很少发生变化,安装后做一次备份即可。通常情况下,程序文件可方便地从原始安装盘中恢复。
选择备份介质
把备份存到哪里有多种选择。下面介绍一些可选择的备份介质:
软盘:如果要把重要文件快速备份,或者将其带到家中,这时软盘仍旧是一种可选的备份介质。
光盘写入器:随着光盘写入器变得越来越可靠,价格也越来越低,光盘本身也非常便宜。选用此项的一个好处是光盘不容易被损坏,它备份的可靠性很高。使用光盘写入器有两点不利因素:它们速度较慢,并且只能保存大约650MB。
可重写的光盘:可重写光盘驱动器比光盘写入器要贵得多,工作方式与其类似。但是,这些光盘是可被重写的,并且它比只能写一次的光盘贵许多。可重写光盘其它的特性都与光盘写入器类似。
Jaz 和Zip:Zip驱动器很流行,已经成为许多PC机的标准配置,同时它的磁盘和驱动器也都不贵。它一张磁盘可容纳100MB的数据,是一种用于快速、可移动备份的很好选择。Jaz磁盘可以容纳上G字节的数据,并且使用更先进的技术以获得更好的表现。Jaz驱动器和Jaz磁盘都比较贵。Jaz和Zip的缺陷是都容易损坏,并且保持时间相对要短。
磁带机:磁带备份设备是大多数Linux服务器的标准配置。磁带是可靠的,并且很少出现错误,它几乎比其它介质存储时间都要长。对于点对点工作组网络和中型网络,Travan和高端数字音频磁带(DAT)通常是最好的选择。Travan驱动器经过压缩可以处理8GB数据,这对于具有5-10个PC机的小型网络来说足够了。DAT驱动器有更好的表现,可以处理24GB的数据。DAT驱动器比 Travan驱动器昂贵,但它磁带的价格要比Travan QIC磁带卷便宜。
高端磁带:选择高端磁带可能是相当贵的。与Travan 或DAT相比,这种驱动器有更大的容量和更高的速度。三种广泛使用的驱动器类型是:Sony Advanced Intelliget Tape ( AIT ) 、Quantum Digital Linear Ta p e ( DLT )和Exabyte Mammoth 8mm。它们最少可以容纳20GB的不压缩数据,并且具有更高的数据传输能力。
用于备份的Tar
备份工具Tar是以前备份文件的可靠方法,几乎可以工作于任何环境中,Linux老用户一般都信赖它。 Linux中以。tar结尾的文件都是用tar创建的。它的使用超出了单纯的备份,可用来把许多不同文件放到一起组成一个易于分开的文件。tar是从 Tape ARchiver备份工具起步的。包含在Linux中的GNU tar工具简便易用,包含了一个用来压缩的选项,且支持不断增加的备份。tar是一个命令行的工具,没有图形界面。使用Konsole或Kvt打开一个终端窗口,接下来是一个简单的备份命令:
$tar cvf - /home > /temp/backup.tar
这个命令在/tmp目录中创建一个backup.tar的文件,/home目录中所有内容都包含在其中。接下来可以把tar文件拷贝到备份磁盘中。使用简单备份时,如果要使用压缩功能,改为下面命令:
$tar czvf - /home > /tmp/backup.tgz
上面扩展名。 tgz指出这是一个压缩文件。下一个例子可以用来直接备份到一个安装好的Jaz驱动器中,但这样做要确定有足够的空间:
$tar czvf /mnt/jaz/backup.tgz - /home
对于一个磁带驱动器,使用设备名称:
$tar czvf /dev/st0/backup.tgz - /home
如果有一个备份非常大,可以使用多卷选项。但是,这样做就不能使用压缩。当第一个磁盘或磁带填满后,tar将提示插入另一张:
$tar cvMf /dev/st0/5mar2000.tar -home
要恢复备份使用下面的命令,以Jaz磁盘为例:
$tar xzvf /mnt/jaz/5mar2000.tgz /home
表1列出了tar主要功能参数。此外还有很多可选参数,本文不再详述。
表1
备份工具tar可以用crontab工具设置成基于时间的有规律地运行。例如,每晚2点把/home目录备份到SCSI磁带驱动器中,只要将下面语句添加到root的crontab中即可:
00 02 * * * tar cvf /dev/st0/homefiles.tar - /home
要使用 tar 来把除 /proc 目录之外的整个文件系统备份到 SCSI 磁带设备:
$tar -cpf /dev/st0 / --exclude=/proc
在上面的例子中,-c 开关表示归档文件正在被创建。-p 开关表示我们希望保留文件许可权限,这对良好的备份来说是很关键的。-f 开关指向该归档文件的文件名。在本例中,我们使用的是原始磁带设备 /dev/st0。/ 表示我们想要备份的内容。既然我们想要备份整个系统,因此把这个开关指定为根(root)。当把 tar 指向一个目录(以 / 结尾)时,它会自动递归。最后,我们排除了 /proc 目录,因为它没有包含需要保存的任何内容。如果单盒磁带容纳不下这个备份,我们需要添加 -M 开关(本例中没有显示)以进行多卷备份。
要还原一个或多个文件,可以使用带提取开关(-x)的 tar 命令:
$tar -xpf /dev/st0 -C /
-C / 表明我们想要让还原从 / 开始。-C 开关使我们的当前目录不再相关。
您可能会经常使用的另外两个 tar 命令是 -t 和 -d 开关。-t 开关列出某个归档文件的内容。-d 开关将归档文件的内容与系统上的当前文件作比较。
为便于操作和编辑,您可以将想要归档的文件和目录放进一个文本文件中,然后在命令行通过 -T 开关引用这个文本文件。这些文件和目录可以与命令行上列出的其他目录结合起来。下面的命令行备份 MyFiles 中列出的所有文件和目录、/ 根目录和 /tmp 目录中的所有 iso 文件。
$tar -cpf /dev/st0 -T MyFiles /root /tmp/*.iso
文件列表只是一个文本文件,其中列出文件或目录。下面是一个例子:
/etc
/var
/home
/usr/local
/opt
请注意 tar -T(或 files-from)命令不能接受通配符。文件必须明确地列出。上面的例子展示了一种单独地引用文件的方法。您还可以执行脚本来搜索系统,然后建立一个列表。下面就是这样一个脚本的例子:
#!/bin/sh
cat MyFiles > TempList
find /usr/share -iname *.png 》 TempList
find /tmp -iname *.iso 》 TempList
tar -cpzMf /dev/st0 -T TempList
上面的脚本首先将 MyFiles 中的所有现有文件列表复制到 TempList。然后它执行两个 find 命令来搜索文件系统中匹配某个模式的文件,并将它们附加到 TempList。第一次是搜索 /usr/share 目录树中以 .png 结尾的所有文件。第二次是搜索 /tmp 目录树中以 .iso 结尾的所有文件。在建立好列表之后,tar 然后在文件设备 /dev/st0 (第一个 SCSI 磁带设备)上创建 一个新的归档文件,该文件使用 gzip 格式来压缩,并保留所有文件权限。该归档文件将跨越多个卷。要归档的文件的名称将从 TempList 文件中提取。
用于备份的Cpio
GNU cpio工具像tar一样从命令提示行启动程序。与tar相比cpio更复杂,但是也更为可靠。因为如果一个tar文件中某处有一个坏块,就不能对备份文件的其它部分进行访问,而使用cpio,只有坏块不能被访问。cpio创建一个称为copy-out mode的备份,备份存档中包含了文件和所有者、时间及访问许可等信息。cpio需要一个假定要备份的文件列表。创建列表的一个最方便的方法就是使用ls 命令。例如,要把/home目录备份到SCSI磁带设备中,输入下面的命令:
$ls /home | cpio -o > /dev/st0
也可以使用find命令。它包括许多选项可以用来消减被存档文件的数量。例如,下面的命令对所有在上一个2 4小时内修改过的文件进行存档:
$find /home -mtime 1 -type f -print | cpio -o > /dev/st0
copy - in模式把文件从备份存档中解出来。下面的命令会恢复前两个备份例子中的所有文件:
$cpio -i < /dev/st0
看过“linux 文件系统备份 ”
浏览量:2
下载量:0
时间:
Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。下面大家与读文网小编一起来学习一下吧。
1,内核安装特殊rootfs文件系统,该文件系统仅提供一个作为初始安装点的空目录
start_kernel()->vfs_caches_init()->mnt_init()->init_rootfs()
[cpp] view plain copy print?
/*初始化根文件系统*/
int __init init_rootfs(void)
{
int err;
/*初始化ramfs_backing_dev_info*/
err = bdi_init(&ramfs_backing_dev_info);
if (err)
return err;
/*注册rootfs_fs_type文件类型*/
err = register_filesystem(&rootfs_fs_type);
if (err)/*如果出错,销毁上面初始化的*/
bdi_destroy(&ramfs_backing_dev_info);
return err;
}
[cpp] view plain copy print?
static struct backing_dev_info ramfs_backing_dev_info = {
.name = "ramfs",
.ra_pages = 0, /* No readahead */
.capabilities = BDI_CAP_NO_ACCT_AND_WRITEBACK |
BDI_CAP_MAP_DIRECT | BDI_CAP_MAP_COPY |
BDI_CAP_READ_MAP | BDI_CAP_WRITE_MAP | BDI_CAP_EXEC_MAP,
};
[cpp] view plain copy print?
/**
* register_filesystem - register a new filesystem
* @fs: the file system structure
*
* Adds the file system passed to the list of file systems the kernel
* is aware of for mount and other syscalls. Returns 0 on success,
* or a negative errno code on an error.
*
* The &struct file_system_type that is passed is linked into the kernel
* structures and must not be freed until the file system has been
* unregistered.
*/
/*注册一个新的文件系统*/
int register_filesystem(struct file_system_type * fs)
{
int res = 0;
struct file_system_type ** p;
BUG_ON(strchr(fs->name, '.'));
if (fs->next)
return -EBUSY;
INIT_LIST_HEAD(&fs->fs_supers);
write_lock(&file_systems_lock);
/*从system_type链表中查找指定名称的file_system_type*/
p = find_filesystem(fs->name, strlen(fs->name));
if (*p)
res = -EBUSY;
else
*p = fs;
write_unlock(&file_systems_lock);
return res;
}
根文件系统定义如下
[cpp] view plain copy print?
static struct file_system_type rootfs_fs_type = {
.name = "rootfs",
.get_sb = rootfs_get_sb,
.kill_sb = kill_litter_super,
};
下面看看他的两个函数
[cpp] view plain copy print?
/*获得根目录的sb*/
static int rootfs_get_sb(struct file_system_type *fs_type,
int flags, const char *dev_name, void *data, struct vfsmount *mnt)
{
return get_sb_nodev(fs_type, flags|MS_NOUSER, data, ramfs_fill_super,
mnt);
}
[cpp] view plain copy print?
int get_sb_nodev(struct file_system_type *fs_type,
int flags, void *data,
int (*fill_super)(struct super_block *, void *, int),
struct vfsmount *mnt)
{
int error;
/*获得sb结构*/
struct super_block *s = sget(fs_type, NULL, set_anon_super, NULL);
if (IS_ERR(s))
return PTR_ERR(s);
s->s_flags = flags;
/*这里实际调用ramfs_fill_super,对sb结构的属性进行设置*/
error = fill_super(s, data, flags & MS_SILENT ? 1 : 0);
if (error) {
deactivate_locked_super(s);
return error;
}
s->s_flags |= MS_ACTIVE;
simple_set_mnt(mnt, s);/*设置mnt和sb关联*/
return 0;
}
[cpp] view plain copy print?
/**
* sget - find or create a superblock
* @type: filesystem type superblock should belong to
* @test: comparison callback
* @set: setup callback
* @data: argument to each of them
*/
/*查找或创建一个sb结构*/
struct super_block *sget(struct file_system_type *type,
int (*test)(struct super_block *,void *),
int (*set)(struct super_block *,void *),
void *data)
{
struct super_block *s = NULL;
struct super_block *old;
int err;
retry:
spin_lock(&sb_lock);
if (test) {
list_for_each_entry(old, &type->fs_supers, s_instances) {
if (!test(old, data))
continue;
if (!grab_super(old))
goto retry;
if (s) {
up_write(&s->s_umount);
destroy_super(s);
}
return old;
}
}
if (!s) {/*如果找不到sb,从内存中申请一个*/
spin_unlock(&sb_lock);
s = alloc_super(type);
if (!s)
return ERR_PTR(-ENOMEM);
goto retry;
}
err = set(s, data);
if (err) {
spin_unlock(&sb_lock);
up_write(&s->s_umount);
destroy_super(s);
return ERR_PTR(err);
}
/*初始化得到的sb结构*/
s->s_type = type;
strlcpy(s->s_id, type->name, sizeof(s->s_id));
/*加入链表尾*/
list_add_tail(&s->s_list, &super_blocks);
list_add(&s->s_instances, &type->fs_supers);
spin_unlock(&sb_lock);
get_filesystem(type);
return s;
}
[cpp] view plain copy print?
/*所有超级块对象都以双向循环链表的形式链接在一起,量表中第一个
元素用super_blocks变量表示,而超级块对象的s_list字段存放指向链表
相邻元素的指针*/
LIST_HEAD(super_blocks);
[cpp] view plain copy print?
/**
* alloc_super - create new superblock
* @type: filesystem type superblock should belong to
*
* Allocates and initializes a new &struct super_block. alloc_super()
* returns a pointer new superblock or %NULL if allocation had failed.
*/
static struct super_block *alloc_super(struct file_system_type *type)
{
/*从内存中申请sb*/
struct super_block *s = kzalloc(sizeof(struct super_block), GFP_USER);
static const struct super_operations default_op;
if (s) {
if (security_sb_alloc(s)) {
kfree(s);
s = NULL;
goto out;
}
/*初始化*/
INIT_LIST_HEAD(&s->s_files);
INIT_LIST_HEAD(&s->s_instances);
INIT_HLIST_HEAD(&s->s_anon);
INIT_LIST_HEAD(&s->s_inodes);
INIT_LIST_HEAD(&s->s_dentry_lru);
init_rwsem(&s->s_umount);
mutex_init(&s->s_lock);
lockdep_set_class(&s->s_umount, &type->s_umount_key);
/*
* The locking rules for s_lock are up to the
* filesystem. For example ext3fs has different
* lock ordering than usbfs:
*/
lockdep_set_class(&s->s_lock, &type->s_lock_key);
/*
* sget() can have s_umount recursion.
*
* When it cannot find a suitable sb, it allocates a new
* one (this one), and tries again to find a suitable old
* one.
*
* In case that succeeds, it will acquire the s_umount
* lock of the old one. Since these are clearly distrinct
* locks, and this object isn't exposed yet, there's no
* risk of deadlocks.
*
* Annotate this by putting this lock in a different
* subclass.
*/
down_write_nested(&s->s_umount, SINGLE_DEPTH_NESTING);
s->s_count = S_BIAS;
atomic_set(&s->s_active, 1);
mutex_init(&s->s_vfs_rename_mutex);
mutex_init(&s->s_dquot.dqio_mutex);
mutex_init(&s->s_dquot.dqonoff_mutex);
init_rwsem(&s->s_dquot.dqptr_sem);
init_waitqueue_head(&s->s_wait_unfrozen);
s->s_maxbytes = MAX_NON_LFS;
s->dq_op = sb_dquot_ops;
s->s_qcop = sb_quotactl_ops;
s->s_op = &default_op;
s->s_time_gran = 1000000000;
}
out:
return s;
}
kill_litter_super的过程相反,这里不再写了。
构造根目录是由init_mount_tree()函数实现的,该函数在前面已经介绍过了。
2,安装实际根文件系统
关于__setup宏
__setup宏来注册关键字及相关联的处理函数,__setup宏在include/linux/init.h中定义,其原型如下:
__setup(string, _handler);
其中:string是关键字,_handler是关联处理函数。__setup只是告诉内核在启动时输入串中含有string时,内核要去
执行_handler。String必须以“=”符结束以使parse_args更方便解析。紧随“=”后的任何文本都会作为输入传给
_handler。下面的例子来自于init/do_mounts.c,其中root_dev_setup作为处理程序被注册给“root=”关键字:
__setup("root=", root_dev_setup);
比如我们在启动向参数终有
noinitrd root=/dev/mtdblock2 console=/linuxrc
setup_arch解释时会发现root=/dev/mtdblock2,然后它就会调用root_dev_setup
[cpp] view plain copy print?
static int __init root_dev_setup(char *line)
{
strlcpy(saved_root_name, line, sizeof(saved_root_name));
return 1;
}
__setup("root=", root_dev_setup);
Start_kernel->rest_init->init-> prepare_namespace->
[cpp] view plain copy print?
/*
* Prepare the namespace - decide what/where to mount, load ramdisks, etc.
*/
void __init prepare_namespace(void)
{
int is_floppy;
if (root_delay) {
printk(KERN_INFO "Waiting %dsec before mounting root device...",
root_delay);
ssleep(root_delay);
}
/*
* wait for the known devices to complete their probing
*
* Note: this is a potential source of long boot delays.
* For example, it is not atypical to wait 5 seconds here
* for the touchpad of a laptop to initialize.
*/
wait_for_device_probe();
/*创建/dev/ram0,必须得,因为initrd要放到/dev/ram0里*/
md_run_setup();
if (saved_root_name[0]) {/*saved_root_name为从启动参数"root"中获取的设备文件名*/
root_device_name = saved_root_name;
if (!strncmp(root_device_name, "mtd", 3) ||
!strncmp(root_device_name, "ubi", 3)) {/*如果设备名开头为这两个*/
mount_block_root(root_device_name, root_mountflags);
goto out;
}
/*主设备号和次设备号*/
ROOT_DEV = name_to_dev_t(root_device_name);
if (strncmp(root_device_name, "/dev/", 5) == 0)
root_device_name += 5;/*滤掉'/dev/'字符*/
}
if (initrd_load())
goto out;
/* wait for any asynchronous scanning to complete */
if ((ROOT_DEV == 0) && root_wait) {
printk(KERN_INFO "Waiting for root device %s...",
saved_root_name);
while (driver_probe_done() != 0 ||
(ROOT_DEV = name_to_dev_t(saved_root_name)) == 0)
msleep(100);
async_synchronize_full();
}
is_floppy = MAJOR(ROOT_DEV) == FLOPPY_MAJOR;
if (is_floppy && rd_doload && rd_load_disk(0))
ROOT_DEV = Root_RAM0;
/*实际操作*/
mount_root();
out:
devtmpfs_mount("dev");/*devfs从虚拟的根文件系统的/dev umount*/
sys_mount(".", "/", NULL, MS_MOVE, NULL);/*将挂载点从当前目录【/root】(在mount_root函数中设置的)移到根目录*/
/*当前目录即【/root】(真正文件系统挂载的目录)做为系统根目录*/
sys_chroot(".");
}
mount_root操作
[cpp] view plain copy print?
void __init mount_root(void)
{
#ifdef CONFIG_ROOT_NFS
if (MAJOR(ROOT_DEV) == UNNAMED_MAJOR) {
if (mount_nfs_root())
return;
printk(KERN_ERR "VFS: Unable to mount root fs via NFS, trying floppy.");
ROOT_DEV = Root_FD0;
}
#endif
#ifdef CONFIG_BLK_DEV_FD
if (MAJOR(ROOT_DEV) == FLOPPY_MAJOR) {
/* rd_doload is 2 for a dual initrd/ramload setup */
if (rd_doload==2) {
if (rd_load_disk(1)) {
ROOT_DEV = Root_RAM1;
root_device_name = NULL;
}
} else
change_floppy("root floppy");
}
#endif
#ifdef CONFIG_BLOCK/*这里是一般流程*/
create_dev("/dev/root", ROOT_DEV);/*用系统调用创建"/dev/root"*/
mount_block_root("/dev/root", root_mountflags);
#endif
}
[cpp] view plain copy print?
void __init mount_block_root(char *name, int flags)
{
/*从cache中分配空间*/
char *fs_names = __getname_gfp(GFP_KERNEL
| __GFP_NOTRACK_FALSE_POSITIVE);
char *p;
#ifdef CONFIG_BLOCK
char b[BDEVNAME_SIZE];
#else
const char *b = name;
#endif
/*获得文件系统类型,如果在bootoption里有,
则就为这个文件系统类型,如果没有指定,
则返回ilesytem链上所有类型,下面再对每个进行尝试.*/
get_fs_names(fs_names);
retry:
for (p = fs_names; *p; p += strlen(p)+1) {
/*实际的安装工作,这里调用了mount系统调用
将文件系统挂到/root目录,p为文件系统类型,由get_fs_names得到
*/
int err = do_mount_root(name, p, flags, root_mount_data);
switch (err) {
case 0:
goto out;
case -EACCES:
flags |= MS_RDONLY;
goto retry;
case -EINVAL:
continue;
}
/*
* Allow the user to distinguish between failed sys_open
* and bad superblock on root device.
* and give them a list of the available devices
*/
#ifdef CONFIG_BLOCK
__bdevname(ROOT_DEV, b);
#endif
printk("VFS: Cannot open root device "%s" or %s",
root_device_name, b);
printk("Please append a correct "root=" boot option; here are the available partitions:");
printk_all_partitions();
#ifdef CONFIG_DEBUG_BLOCK_EXT_DEVT
printk("DEBUG_BLOCK_EXT_DEVT is enabled, you need to specify "
"explicit textual name for "root=" boot option.");
#endif
panic("VFS: Unable to mount root fs on %s", b);
}
printk("List of all partitions:");
printk_all_partitions();
printk("No filesystem could mount root, tried: ");
for (p = fs_names; *p; p += strlen(p)+1)
printk(" %s", p);
printk("");
#ifdef CONFIG_BLOCK
__bdevname(ROOT_DEV, b);
#endif
panic("VFS: Unable to mount root fs on %s", b);
out:
putname(fs_names);
}
[cpp] view plain copy print?
static int __init do_mount_root(char *name, char *fs, int flags, void *data)
{
/*mount系统调用来做实际的安装文件系统工作*/
int err = sys_mount(name, "/root", fs, flags, data);
if (err)
return err;
/*改变当前路径到根目录*/
sys_chdir("/root");
ROOT_DEV = current->fs->pwd.mnt->mnt_sb->s_dev;
printk("VFS: Mounted root (%s filesystem)%s on device %u:%u.",
current->fs->pwd.mnt->mnt_sb->s_type->name,
current->fs->pwd.mnt->mnt_sb->s_flags & MS_RDONLY ?
" readonly" : "", MAJOR(ROOT_DEV), MINOR(ROOT_DEV));
return 0;
}
到此,根文件系统的安装过程算是完成了,中间关于mount等系统调用将在后面分析。可以看出总的步骤主要有:
1,创建一个rootfs,这个是虚拟的rootfs,是内存文件系统(和ramfs),后面还会指向具体的根文件系统;
2,从系统启动参数中获取设备文件名以及设备号;
3,调用系统调用创建符号链接,并调用mount系统调用进程实际的安装操作;
4,改变进程当前目录;
5,移动rootfs文件系统根目录上得已经安装文件系统的安装点;
rootfs特殊文件系统没有被卸载,他只是隐藏在基于磁盘的根文件系统下了。
浏览量:2
下载量:0
时间:
Linux文件管理从用户的层面介绍了Linux管理文件的方式。Linux有一个树状结构来组织文件。树的顶端为根目录(/),节点为目录,而末端的叶子为包含数据的文件。当我们给出一个文件的完整路径时,我们从根目录出发,经过沿途各个目录,最终到达文件。那么linux文件系统怎么管理?下面跟着读文网小编一起来了解一下吧。
在linux中所有的东西都是文件
Linux文件系统的组织方式称做Filesystem Hierarchy Standard(文件系统分层标准,简称FHS),即采用层次式的树状目录结构。在此结构的最上层是根目录"/"(斜杠),然后在此根目录下是其他的目录和子目录
Linux与DOS及Windows一样,采用"路径"来表示文件或目录在文件系统中所处的层次。路径由以"/"为分隔符的多个目录名字符串组成,分为绝对路径和相对路径。所谓绝对路径是指由根目录"/"为起点来表示系统中某个文件或目录的位置的方法。例如如果用绝对路径表示图中第4层目录中的bin目录,应为"/usr/local/bin"。相对路径则是以当前目录为起点,表示系统中某个文件或目录在文件系统中的位置的方法。若当前工作目录是"/home",则用相对路径表示图中第4层目录中的bin目录,应为"hls/bin"或"./hls/bin",其中"./"表示当前目录,通常可以省略。
Linux文件系统的组织与Windows操作系统不同。对于在Linux下使用的设备,不需要像Windows那样创建驱动器盘符,Linux会将包括本地磁盘、网络文件系统、CD-ROM和U盘等所有设备识别为设备文件,并嵌入到Linux文件系统中来进行管理。一个设备文件不占用文件系统的任何空间,仅仅是访问某个设备驱动程序的入口。Linux 系统中有两类特殊文件:面向字符的特殊文件和面向块(block)的特殊文件。前者允许I/O操作以字符的形式进行,而后者通过内存缓冲区来使数据的读写操作以数据块的方式实现。当对设备文件进行I/O操作时,该操作会被转给相应的设备驱动程序。一个设备文件是用主设备号(指出设备类型)和从设备号(指出是该类型中的第几个设备)来表示的,可以通过mknod命令进行创建。软盘、光盘和硬盘等典型设备文件在Linux系统中的表示方法。
典型设备文件在Linux系统中的表示方法
Linux文件名最长可允许256个字符,可以包括数字、字符,以及"."、"-"、"_"等符号。Linux文件名不像DOS或Windows由主文件名和扩展文件名两部分组成,Linux中没有扩展名的概念。Linux环境下,文件名对大小写敏感(Case Sensitive),例如test.txt与Test.txt会被识别成两个不同的文件,而DOS或Windows平台是不进行大小写区分的。
文件系统的构成
/usr/bin、/bin : -------------存放所有用户可以执行的命令
/usr/sbin、/sbin : -----------存放只有root可以执行的命令
/home :--------------------用户缺省宿主目录
/proc :---------------------虚拟文件系统,存放当前内存镜像
/dev :----------------------存放设备文件
/lib :-----------------------存放系统程序运行所需的共享库
/lost+foud :---------------存放一些系统出错的检查结果
/tmp :---------------------存放临时文件
/etc :-----------------------系统配置文件
/var :----------------------包含经常发生变动的文件,如:邮件、日志文件、计划任务等
/usr :----------------------存放所有命令、库、手册页等 类似于windows C盘下的WINDOWS目录
/mnt :----------------------临时文件系统的安装点
/boot :---------------------内核文件及自举程序文件保存位置
用windows下我们习惯把安装的程序放在Program files目录下,在linux下面习惯放在/user/local下。
查看文件命令
查看分区使用情况:df
查看文件、目录大小:du
检测修复文件系统: fsck、e2fsck
(单用户模式执行)
判断文件类型:file
df 查看linux磁盘分区情况
在windows下查看我们硬盘的分区很简单,打开“我的电脑”就知道有几个盘,鼠标放到盘符上就显示磁盘的大小,那么在linux下如何查看呢,其实也非常简单,一个命令的事儿
[root@bogon ~]# df -h
Filesystem 容量 已用 可用 已用% 挂载点
/dev/sda1 9.7G 3.3G 5.9G 37% /
none 506M 0 506M 0% /dev/shm
/dev/sda2 2.9G 37M 2.7G 2% /hzh
/dev/sda5 6.2G 47M 5.9G 1% /web
du 查看文件、目录的大小
windows下查看文件、目录的大小右键--属性,linux我们使用du命令进行查看。
root@fnngj-H24X:/hzh# du -h test.test ------查看文件的大小
4.0K test.test
root@fnngj-H24X:/# du -sh /etc ------查看目录的大小
7.1M /etc
file判断文件类型
我们知道linux下的文件不是同过后缀名来确定类型的,如果刚好某个文件没有定义后缀名,我们可以通过file命令来查看后缀名。
root@fnngj-H24X:/hzh# file test.test
test.test: ASCII text
添加磁盘、分区、格式化、挂载
这是我们在玩linux服务器时会遇到的一个问题,根据初期的规划,你linux上了一块500GB的硬盘,过了一段时间,不够用了。怎么办?换一个1TB的硬盘,把系统重装一下,把原来的数据拷贝到新硬盘上。这种方式可以,但太笨。直接在原系统上加一块硬盘不就行了。我们现在需要知道的就是如何让新加的这块硬盘给我们工作。
设置---根据图片的提示添加一块新的虚拟硬盘,嗯!这就是虚拟机的好处,可以帮我们模拟添加多块硬盘。呵呵
划分分区(fdisk)
创建文件系统(mkfs)
尝试挂载(mount)
写入配置文件(/etc/fstab)
查看新添加分区的硬盘信息:
[root@bogon ~]# dmesg | grep sdb sdb是我们添加的第二块硬盘
SCSI device sdb: 20971520 512-byte hdwr sectors (10737 MB)
sdb: cache data unavailable
sdb: assuming drive cache: write through
SCSI device sdb: 20971520 512-byte hdwr sectors (10737 MB)
sdb: cache data unavailable
sdb: assuming drive cache: write through
sdb: unknown partition table
Attached scsi disk sdb at scsi0, channel 0, id 1, lun 0
如果敲入dmesg | grep sdb命令没有任何信息,那问题就大了,你的系统没有识别新添加胡硬盘。
对硬盘进行分区
下面先看一下我们添加的第二块硬盘的一些信息。
[root@bogon ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
sdb中b表示第二块硬盘,如果想看我们第一块硬盘的信息,可以输入sda
[root@bogon ~]# fdisk -l /dev/sda
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1275 10241406 83 Linux
/dev/sda2 1276 1657 3068415 83 Linux
/dev/sda3 1658 1788 1052257+ 82 Linux swap
/dev/sda4 1789 2610 6602715 5 Extended
/dev/sda5 1789 2610 6602683+ 83 Linux
下面开始真正的对硬盘进行分区
[root@bogon ~]# fdisk /dev/sdb
The number of cylinders for this disk is set to 2610.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): m ----- 按m可以获得帮助信息
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition -----删除分区
l list known partition types
m print this menu
n add a new partition -----添加一个新的分区
o create a new empty DOS partition table
p print the partition table -----显示分区表
q quit without saving changes -----不保存退出
s create a new empty Sun disklabel
t change a partition's system id -----改变文件系统类型
u change display/entry units
v verify the partition table
w write table to disk and exit ----- 保存退出
x extra functionality (experts only)
------------------------------------------------------添加第一个主分区--------------------------
Command (m for help): p ----- 显示分区表
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
Command (m for help): n ----- 添加新分区
Command action
e extended e是扩展分区
p primary partition (1-4) ----p是主分区,我们最多可以添加4个主分区
p ----- 按p表示我们要划分主分区
Partition number (1-4): 1 -----给主分区的一个编号1
First cylinder (1-1305, default 1): -----这1到1305是指扇面,这个比较麻烦,不选择直接回车
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1305, default 1305): +5120M ---- 这个地方我们要指定分区的大小,我们可以通过字节的方式来指定,国为我的硬盘是10G,我划分5G出来。
Command (m for help): p ----- 现在再来查看分区表
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 623 5004216 83 Linux ----- 划分的第一个主分区信息出来了
-----------------------------------------------------添加第二个主分区---------------------------------
Command (m for help): n ----- 按n继续划分分区
Command action
e extended
p primary partition (1-4)
p -----p再划一个主分区
Partition number (1-4): 2 ----- 这里输入2表示第二个主分区
First cylinder (624-1305, default 624):
Using default value 624
Last cylinder or +size or +sizeM or +sizeK (624-1305, default 1305): ----- 我们要把剩余空间都给2,这里直接回车
Using default value 1305
Command (m for help): p ----- 再来查看分区表
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 623 5004216 83 Linux
/dev/sdb2 624 1305 5478165 83 Linux ----- 划分的两个分区都出来了
指定磁盘的格式
接下来要指这文件系统的类型,现在的window分FAT32和NTFS是两种比较常见的分区,那linux下面磁盘支持的格式就非常多了
注:下面的操作不要退出fdisk模式
Command (m for help): t ----给分区指定表格
Partition number (1-4): 1 ----我们选编号为1的主分区
Hex code (type L to list codes): L ---- 这里我们不知道编号,可用L来查看所有的分区格式
83 Linux -----这个也就是我们刚划分的两个主分区的格式。
Hex code (type L to list codes): 83 ---- 如果不想改变原有格式直接输入83回车
删除分区
如果这时你发现自己的分区划分的不合理,想删除某一个分区,重新划分。
注:下面的操作不要退出fdisk模式
Command (m for help): d ----删除分区
Partition number (1-4): 2 ----这里选择删除第2个分区
Command (m for help): P
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 63 506016 83 Linux ---- 我们划分的两个分区只剩一个了
保存退出
当我们把分区分好以后,需要保存退出才能保存我们划分的分区。其它非正常退出都不能保存我们划好的分区。
注:此处才是我们要退出fdisk模式的时候^_^
Command (m for help): w--w是保存退出,q是不保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
磁盘格式话
ok!分区已经完毕,下面是不是应该对硬盘进行一下格式化了
[root@bogon ~]# mk -- 输入mk,按两下tab键,你会看到linux下面有许多分区命令
mkafmmap mkdosfs mkfs.ext2 mkisofs mktemp
mkbootdisk mke2fs mkfs.ext3 mklost+found mkxauth
mkcfm mkfifo mkfs.msdos mkmanifest mkzftree
mkcramfs mkfontdir mkfs.vfat mknod mkzonedb
mkdict mkfontscale mkhtmlindex mkSimNodeDir
mkdir mkfs mkhybrid mksock
mkdirhier mkfs.cramfs mkinitrd mkswap
windwos下我们在格式化的时候,可以指定FAT32和NTFS,那么linux下流行的格式为ext2和ext3 ,这里我们对划分好的第1个分区进行格式化,选用ext3的格式
[root@bogon ~]# mkfs.ext3 /dev/sdb1
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
626496 inodes, 1251054 blocks
62552 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1283457024
39 block groups
32768 blocks per group, 32768 fragments per group
16064 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
挂载分区
OK!现在硬盘分区也分好了,也进行了格式化,下面要使用这个分区了。在使用的时候我们需要对其进行挂载。就像前面我讲的挂在光盘一样。使用mount命令。
[root@bogon /]# mkdir /newsdb -----我们在根目录下创建一个做挂载点的目录/newsdb
[root@bogon /]# mount /dev/sdb1 /newsdb/ ---- 然后把格式化好的第1个分区/dev/sdb1 挂载到/newsdb目录下
[root@bogon /]# df -h
Filesystem 容量 已用 可用 已用% 挂载点
/dev/sda1 9.7G 3.3G 5.9G 37% /
none 506M 0 506M 0% /dev/shm
/dev/sda2 2.9G 37M 2.7G 2% /hzh
/dev/sda5 6.2G 47M 5.9G 1% /web
/dev/sdb1 4.7G 42M 4.5G 1% /newsdb
看过“ linux文件系统怎么管理 ”
浏览量:2
下载量:0
时间:
随着对Linux系统的操作难免会产生各种软件安装包、软件残余、浏览器缓存文件和文档缓存文件等等,对这些垃圾文件进行清理可以缓解系统空间容量,有效提高系统运行速度,以下是读文网小编整理的清理Linux垃圾文件的方法,供大家参考,希望大家能够有所收获!
利用命令清理Linux垃圾文件的操作教程:
在Linux系统中管理垃圾文件并没那么简单,虽然产生的Linux垃圾文件比较少,但随着对Linux系统的操作难免会产生各种软件安装包、软件残余、浏览器缓存文件和文档缓存文件等等,对这些垃圾文件进行清理可以缓解系统空间容量,有效提高系统运行速度。
比如,我们安装软件 A,但是 A 依赖软件包 B,当 A 被安装的过程中,B 也必须被安装。
有一天,我们不再需要软件 A 并删除了它,我们就可以用 autoremove 命令,删除当初为了满足 A 的依赖关系而安装的软件 B。
听起来怎么有点过河拆桥的意思呢。
总之,执行以下命令就可以删除不再需要的依赖包:
sudo apt-get autoremove
这在内核升级时比较常见:新内核被安装,就可以用上述命令删除旧的内核。
浏览量:2
下载量:0
时间:
读文网小编在Linux中出现损坏文件系统的问题后,不仅命令执行失败,而且设备也不能正常工作。然后我就上网查询相关资料然后才得以修复,那么本文章就由读文网小编来给大家介绍遇见Linux文件系统损坏故障怎么办?
以上介绍就是修复Linux文件系统故障的全部内容了,虽然Linux文件系统损坏故障比较容易发生,但是修复的方法也是比较简单的,有兴趣的朋友可以尝试下,希望可以帮助到你。
浏览量:2
下载量:0
时间:
大家都用过Windows,在使用windows系统的过程中系统会变得越来越慢。而对于Windows下饱受诟病的各种垃圾文件都需要自己想办法删除,不然系统将会变得越来越大,越来越迟钝!windows怎么清理垃圾相信大家都知道的,那么linux下怎么清理系统垃圾呢?下面是Linux系统清理垃圾文件的方法,希望读文网小编整理的对你有用,欢迎阅读:
Linux系统清理垃圾文件的方法:
Linux的文件系统比Windows的要优秀,不会产生碎片,对于长时间运行的服务器来说尤为重要,而且Linux系统本身也不会像Windows一样产生大量的垃圾文件。不知道这个说法有没有可信度!至少我们可以确定的是linux系统的文件系统是比较优秀的!
删除用户后遗留下的垃圾文件
我们删除一个账户之后,还会存在一些无用垃圾文件及目录,我们要找出属于这个用户的垃圾东西,使用 find / -user 用户名 :就可以找到根目录下属于这个用户的相关文件 ,使用命令:
# find ./ -nouser |xargs rm –rf
删除core文件
当我们在系统下运行某个程序出错的时候,系统会自动将残留在内存中的数据存成 core 文件,久而久之,系统中遗留下来的 core 会越来越多。我们就可以应用find命令加上—exec 参数来清理它们。使用命令:
# find / -name core -print -exec rm -rf {} ;
删除多余的手册页
另外Linux提供了众多语言的手册页(man)比如Ubuntu的手册页位于/usr/share/man目录下,可以使用命令删除多余语言的手册页保留中英文即可。
# cd /usr/share/man
# find ./ -maxdepth 1 -type d | tail -n +2 | grep -E -v '(en|zh|man).*' | while read d; do rm -rf $d; done
说明:关键字是(en|zh|man) ,可以根据自己的情况修改。
使用fdupes工具删除指定目录下重复文件
fdupes是一个命令行工具,它会查找和删除指定目录的重复文件,它通过文件的大小和MD5值进行比较 。一个字节一个字节进行对比。首先安装这个工具
# apt-get install fdupes
在/etc目录查找重复文件,使用如下命令:
# fdupes /etc
可以与Linux命令组合使用,删除文件 :
#fdupes -r -f . | grep -v ^$ | tee duplicate.txt cat duplicate.txt | while read file; do rm -v "$file"; done
另外也可以与 sed 命令组合使用,删除文件 :
# fdupes -r -n -S /tmp | sed -r “s/^/#rm ”/” | sed -r “s/$/”/” >duplicate-files.sh
删除缓存文件
清理旧版本的软件缓存:# apt-get autoclean
清理所有软件缓存:# apt-get clean
Linux、centos日志文件清除:cat /dev/null > logfile把一下代码保存为.sh后缀脚本来运行即可清除Linux系统日志:
#!/bin/sh
cat /dev/null > /var/log/syslog
cat /dev/null > /var/adm/sylog
cat /dev/null > /var/log/wtmp
cat /dev/null > /var/log/maillog
cat /dev/null > /var/log/messages
cat /dev/null > /var/log/openwebmail.log
cat /dev/null > /var/log/maillog
cat /dev/null > /var/log/secure
cat /dev/null > /var/log/httpd/error_log
cat /dev/null > /var/log/httpd/ssl_error_log
cat /dev/null > /var/log/httpd/ssl_request_log
cat /dev/null > /var/log/httpd/ssl_access_log
另外清理linux系统垃圾还有以下命令
sudo apt-get autoclean 清理旧版本的软件缓存
sudo apt-get clean 清理所有软件缓存
sudo apt-get autoremove 删除系统不再使用的孤立软件
希望本文介绍的Linux、centos下清除系统垃圾和日志方法能够对读者有所帮助,更多有关linux系统的知识还有待于读者去探索和学习。
浏览量:2
下载量:0
时间:
因为Linux系统安装软件较为复杂,如果下载的软件被修改过的话安装起来就十分麻烦,校检Linux系统下载文件的完整性就变得十分重要,下面读文网小编就给大家介绍下如何校检Linux系统中下载文件的完整性。
校验方法当前一般是MD5,SHA1,PGP三种。在Windows那个漫长的岁月里(沧桑有木有),一般只能接触到前两种——前提是你会去校验的话。
原理: 原理同MD5一样,都是通过对文件进行HASH求值,比对文件发布者发布的HASH值,通过是否相等判断文件是否被篡改
说明: SHA1 HASH求值方法可以说是MD5的一个升级版本(SHA1 20位,MD5 16位),在HASH求值方面,MD5退出的舞台将有SHA1占据。SHA家族有五个算法:SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,后四种有时候称为SHA2
使用: CentOS有SHA1的命令: sha1sum
代码如下:
# 说明同上
# 直接输出SHA1 Hash
$ sha1sum your-downloaded-file-name
12dc96cbd822598c1230c87622f3591461a77227 your-downloaded-file-name《/p》 《p》# 将SHA1 Hash值保存到文件中
$ sha1sum your-downloaded-file-name 》 sha1-hash.txt
# 显示文件内容
$ cat sha1-hash.txt
12dc96cbd822598c1230c87622f3591461a77227 your-downloaded-file-name《/p》 《p》#通过sha1-hash.txt来校验我们下载的文件your-downloaded-file-name
# 注意,文件必须要要通过txt文件中的路径知道哦
$ sha1sum -c sha1-hash.txt
your-downloaded-file-name: OK
这个SHA1和MD5基本一致,需要补充说明下的是,在使用 md5sum 也好,还是 sha1sum 也罢,校验文件的时候,务必要让系统能够根据文件中提供的路径找到文件,如果文件找不到,是没有办法进行校验的。
如果是做多个文件的Hash校验,可以通过一个文件保存多个文件的Hash值即可。
浏览量:2
下载量:0
时间: