Linux系统常用几十个命令
1.RPM (1)查看命令 rpm -q 软件名 //查看软件是否安装 rpm -qa //列出所有安装在本机上的软件,通常可以和管道符号 “|” 配合使用,例 如:rpm -qa |grep 软件名 rpm -qi 软件名 //列出软件的详细信息,包括开发商,版本和说明等 rpm -ql 软件名 //列出该软件所有额文件和目录 rpm -qc 软件名 //列出该软件的所有的配置文件 rpm -qd 软件名 //列出软件的所有帮助文件 rpm -qR 软件名 //列出与该软件有关的相依软件所含的文件 rpm -qf 文件名 //列出该文件属于哪一个已经安装的软件 注意: rpm -qp[i c d l R] 所接的参数同上,但是用途在于找出某个RPM软件包内的信息,而非已安装的软件的信息! (2)安装: rpm -ivh 软件名 //安装软件,并且显示安装信息和安装进度 (3)安装与升级 rpm -Uvh 软件名 //软件的安装与更新 rpm -Fvh 软件名 //作用同上,但是如果软件没有安装,则这条命令不会升级该软件 (4)卸载 rpm -e 软件名 //卸载软件 注意:RPM类型的软件所拥有的文件都放置在系统预设放置的目录下,如下 /etc 配置文件放置目录,例如 /etc/crontab /usr/bin 可执行文件 /usr/lib 程序使用的动态函数库 /usr/share/doc 基本的软件使用手册与说明文件 /usr/share/man man page 文件 2.yum (Yellow dog Updater,Modified) yum clean all //在进入配置文件/etc/yum.repo.d/*.repo进行配置前清空yum缓存所有信息 yum install 软件名 -y //用yum安装软件命令,-y 表示不进行确认 yum remove 软件名 //移除软件,但是很少用 yum的优点: (1)更方便的添加/删除/更新RPM包 (2)便于管理大量的系统更新问题 (3)可以同时配置多个资源库(Repository) (4)简洁的配置文件(/etc/yum.conf) (5)自动解决增加或删除rpm包时遇到的属性相依的问题 (6)使用方便 (7)保持与RPM数据库的一致性 服务器端配置文件/etc/yum.conf 一般我们都不用去修改,我们可以搭建本地yum源 例如:vim 编辑 /etc/yum.repo.d/*.repo 配置文件 [sxkeji] name = sxkeji //源名称 baseurl = file:///local_yum //源路径,file表示使用文件方式,即本地源 enable = 1 //是否启用这个yum源,1为启用 gpgcheck = 0 //是否使用gpg检测,0为不使用 3.fdisk fdisk -l //查看Linux服务上的所有磁盘使用信息 fdisk /dev/sda //对磁盘进行分区操作,使用该命令后会弹出对话框输入help进行详细分区操作解释mkfs -t ext3 /dev/sda6 //分好区以后对磁盘分区进行格式化之后才能使用 dumpe2fs /dev/sda6|less //显示ext2或者ext3文件系统信息 4.swap mkswap /dev/sda7 //直接创建swap,简单快速 free -m //查看swap swapon /dev/sda7 //加载swap swapon -s //查看系统所有启动的swap swapoff /dev/sda7 off //当我的系统里面有了swap,再者我不想有太多swap,停掉swap swap分区的操作: dd if=/dev/zero of=/temp/swap bs=1M count=256 //用dd命令建一个256M的文件在/temp目录下 mkswap /tmp/swap //使用mkswap将这个文件格式化成swap文件格式 swapon /tmp/swap //将/tmp/swap启动 5.parted parted /dev/sda //查看分区信息 parted /dev/sda print //直接打印出磁盘的分区信息 6.dd (dd命令的作用是指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换) dd if=/dev/fd0 of=disk.img bs=1024 //为软盘建立镜像文件 dd if=/dev/hda of=disk.mbr bs=512 count=1 //把第一个磁盘的前512个字节存为一个文件 dd if=/dev/sda of=/root/server.mbr bs=512 count=1 //备份mbr dd if=/root/server.mbr of=/dev/sda bs=512 count=1 //还原mbr dd if=/dev/zero of=/dev/sda bs=512 count=1 //用0去填充mbr,相当于破坏了mbr的第一个部分为pre-boot(预启动区446字节)和第二部分是分区表(64字节) dd if=/dev/zero of=/temp/swap bs=1M count=256 //用dd命令建一个256M的文件在/temp目录下 7.fsck(用于文件系统的检验) fsck -Ca /dev/sda6 //检验刚刚创建的文件系统 注意:在平常系统启动的过程中,如果由于突然断电等故障导致系统分区损坏,系统提示你进行修复时,直接进入系统,执行(fsck -a 设备名) 就可以进行系统修复。 8.mount fuser -km /mnt/hda2 //当设备繁忙时强制卸载 mount //直接输入mount就可以查看整个系统挂载情况 mount /dev/sda6 /shuanxing //直接挂载 umount /shungxing //卸载文件系统 注意:a.如果你想要新创建的文件系统能够做到开机自动挂载,就可以将其加入到/etc/fstab文件中,写入方式如下一行: 设备文件名或者该设备的Label 挂载点 磁盘分区的文件系统(ext3/ext4) 文件系统参数(default) 0 0 (写入挂载点也就是标签的时候一定要是我们分区的时候对应的标签,例如刚才的/shuanxing ) b.在就是直接将挂载的命令写入/etc/rc/local 文件里面,即enable mount /dev/sda6 /shuanxing >>/etc/rc.local 9.e2label e2label /dev/sda6 //查看/dev/sda6的标签 e2label /dev/sda6 sxkj //修改设备的标签 e2label /dev/sda6 /shuangxing //记得修改回来,不然可能造成启动失败 10.df df //查看整体磁盘使用情况 df -Th //df命令的参数组合,T表示列出文件系统名称(如ext3),h表示以人们较容易阅读的GB,MB,KB等格式自行显示 11.du du -a //将家目录下所有的文件都列出来,最后显示总量,默认是以kb显示的 du -sh //统计当前目录下的总量 du -sh 目录名 //统计目录的文件总容量 12.stat stat /dev/sda6 //查看设备的状态,可以看到类型、inode数量、主次设备号等信息。 stat 目录 //查看目录的状态 13.ln (连接文件) 基本用法: ln [options] 目标文件 链接文件 常用参数: -s 用于创建软链接 -f 强制覆盖已存在的链接文件 [创建硬链接] touch a //在当前目录下建立a文件,件并且当前目录只有一个a文件 ll -i a //查看文件的inode号码 ln a b //创建硬连接文件b,不加任何参数就是建立硬链接,之后a 和 b 的inode号是一样的,所以两个文件相当于同步了,任何一个更改都会同时显示在这两个文件中 [创建软链接] touch b //在当前目录下建立b文件,件并且当前目录只有一个b文件 ln -s b c //建立软链接,会生成一个新文件c指向b,在c中的任何更改同样会反馈在b中,但是如果将b删除了,c也就打不开了(注意他们的inode号不同) 14.tune2fs (Linux下重要的文件系统调整工具) 基本用法:tune2fs [options] device 常用参数:-c 表示文件系统在mount次数达到设定后,需要进行fsck检查文件系统 -i 文件系统检查间隔时间。系统在达到时间间隔时,自动检查文件系统 -l 显示文件系统的很多参数 -j 转化为ext3文件系统 -L 和e2label类似,更改文件系统标签 -O 可以去掉ext3的日志功能使其成为ext2文件系统,注意大写O tune2fs -c 100 /dev/sda6 //设置文件在被挂载100次后就自动fsck一次,防止文件出现未知的损坏而不自知 tune2fs -i 4w /dev/sda6 //设置文件系统没使用4周就fsck一次 tune2fs -L xkeji /dev/sda6 //更改文件系统卷标 e2label /dev/sda6 //查看文件系统卷标 blkid /dev/sda6 //也是查看文件系统卷标,但是更加详细 tune2fs -O ^has_journal /dev/sda6 //由ext3 ==>ext2 tune2fs -j /dev/sda6 //由ext2 ==>ext3 15.ntfs-3g mount -t ntfs-3g /dev/sdb1 /mnt //由于sdb1是ntfs格式文件系统,所以需要用ntfs-3g工具挂载到其他linux目录下使用 注意:当你的电脑安装一个windows系统和linux系统时,由于windows系统可磁盘文件系统是ntfs格式的,进入linux系统时可以用以上命令挂载使用 16.Quota 磁盘配额简述:使用群组限制与使用用户限制 quota从开始准备filesystem的支持到整个设定结束的主要的步骤大概是: 1. 设定partition的filesystem支持quota参数: 由于quota必须要让partition上面的filesystem支持才行,一般来说,支持度最好的是ext2/ext3,启动filesystem支持quota最简单就是编辑/etc/fstab,使得准备要开放的 quota磁盘可以支持quota; 2. 建立quota记录文件: 刚刚前面讲过,整个quota进行磁盘限制值记录的档案是aquota.user/aquota.group,要建立这两个档案就必须要先利用quotacheck扫描才行喔!所以,接下来的步骤就 是:使用quotacheck来扫描一下我们要使用的磁盘; 3. 编辑quota限制值数据: 再来就是使用edquota来编辑每个使用者或群组的可使用空间; 4. 重新扫描与启动quota: 设定好quota之后,建议可以再进行一次quotacheck,然后再以quotaon来启动吧! 例子: 1. Linux主机里面主要针对quser1及quser2这两个用户来进行磁盘配额,且这两个用户都是挂在qgroup群组里面的。 2. 每个使用者总共有50MB的磁盘空间(不考虑inode)限制!并且soft limit为45MB; 3. 而宽限时间设定为1天,也就是说,这两个人可以突破45MB的限制,但是在一天之内必须要将多余的文件删除,否则将无法使用剩下的空间(也就是说,这个账号大概就不能进行新建文件的工作了); 4. gquota这个群组考虑最大限额,所以设定为90MB好了! (1)建立用户和组 [root@linux ~]# groupadd qgroup [root@linux ~]# useradd -m -g qgroup quser1 [root@linux ~]# useradd -m -g qgroup quser2 [root@linux ~]# passwd quser1 [root@linux ~]# passwd quser2 (2) 建立好filesystem的quota支持 由于quota较完整的支持是需要在ext2/ext3的Linux文件系统下才可以启动,所以建议你就必须要将准备开启quota的磁盘启动 参数,写入 quota的磁盘设定才行(/etc/fstab)!以例子而言,想要在/disk2下进行quota的限制quser1,quser2这两个用户!此外,必需特别留意的是,最好不要以根目录亦即是/进行quota!否则容易有些问题!另 外,不要针对root做quota!反正做了也没用! [root@linux ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda1 5952252 3193292 2451720 57% / /dev/hdb1 28267608 77904 26730604 1% /disk2 /dev/hda5 9492644 227252 8775412 3% /disk1 /disk2是独立的partition,并且他的设备名为/dev/hdb1,好了!那么我就必须要启动/disk2这个/dev/hdb1的 quota档案格式,好了!那么由于文件格式的设定是写在/etc/fstab里头,所以我们以vi来编辑他吧!只要在/etc/fstab里头增加了 usrquota、grpquota就可以啦!(注:请特别留意,这两个项目请『务必』不要写错了!请在写入/etc/fstab之前好好的再次检查,因 为写错之后,很有可能造成系统无法开机,虽然写错的机率不高,但是很有可能!) [root@linux ~]# vi /etc/fstab LABEL=/disk2 /disk2 ext3 defaults,usrquota,grpquota 1 2 这样就算加入了quota的磁盘格式了!不过,由于真正的quota在读取的时候是读取/etc/mtab 这个档案的,偏偏这一个档案需要重新开机之后才能够以/etc/fstab的新数据进行改写!所以这个时候你可以选择: 重新开机(reboot); 重新remount filesystem来启动设置! 对不太喜欢重新开机的人,可以这样做: [root@linux ~]# umount /dev/hdb1 [root@linux ~]# mount -a //将自动挂载/etc/fstab中的文件系统 [root@linux ~]# grep '/disk2' /etc/mtab /dev/hdb1 /disk2 ext3 rw,usrquota,grpquota 0 0 事实上,也可以利用mount的remount功能! [root@linux ~]# mount -o remount /disk2 这样我们就已经成功的将filesystem的quota功能加入了!另外,在这里是以ext3这个磁盘格式来测试quota的! (3) 扫描磁盘的用户使用状况,并产生重要的aquota.group与aquota.user: 接 下来就是要来扫描一下我们所需要的磁盘到底有没有多余的空间可以让我们来设定quota呢?并且将扫描的结果输出到这个磁盘的最顶层去(也就是 /disk2下)这个时候就需要quotacheck这个命令的帮忙了!使用quotacheck就可以轻易的输出了将所需要的数据!并在/disk2下 会产生aquota.group与aquota.user这两个文件! [root@linux ~]# quotacheck -avug quotacheck: Scanning /dev/hdb1 [/disk2] done quotacheck: Checked 3 directories and 4 files [root@linux ~]# ll /disk2 -rw------- 1 root root 6144 Sep 6 11:44 aquota.group -rw------- 1 root root 6144 Sep 6 11:44 aquota.user 使用quotacheck就可以轻易的将所需要的数据给他输出了!但是很奇怪的是,在某些Linux 版本中,不能够以aquota.user(group)来启动quota,这有可能是因为旧版quota的关系,所以就另外做了一个link文件来欺骗quota: [root@linux ~]# cd /disk2 [root@linux ~]# ln -s aquota.user quota.user [root@linux ~]# ln -s aquota.group quota.group 除非您的Linux distributions是比较旧的版本,否则不会有这个问题,所以,这个动作你不一定要进行! (4)启动quota的限额: 再来就是要启动quota啦!启动的方式也是很简单的!就是使用quotaon -av即可: [root@linux ~]# quotaon -avug /dev/hdb1 [/disk2]: group quotas turned on /dev/hdb1 [/disk2]: user quotas turned on 注意:要看到上面有个turned on的出现,才是真的成功了! (5)编辑使用者的可使用空间: 由于我们有两个用户要设置,先来设置quser1好了,使用edquota就对了: [root@linux ~]# edquota -u quser1 //进入用户quser1的quota配置界面 Disk quotas for user quser1 (uid 502): Filesystem blocks soft hard inodes soft hard /dev/hdb1 0 45000 50000 0 0 0 再 次强调的是,因为我的/disk2里面并没有任何数据存在,所以,在上面这个表格当中,blocks与inodes才会都是0,如果您是使用/home 来进行quota设定的,那么blocks/inodes肯定不会是0,这里要特别留意的。好了,上面特殊字体的部分就是我们的设定了,分别是45000 及50000,那个单位是KBytes啦,转成MBytes应该是要除以1024才对,不过,简单算一下就好了,不用太介意!^_^。然后将quser1 的设定直接复制给quser2吧! [root@linux ~]# edquota -p quser1 quser2 接下来要来设定宽限时间,还是使用edquota! [root@linux ~]# edquota -t Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/hdb1 1days 7days 将时间改为1天(原本是7days改成1days),好了!查询一下是否真的有设定进去呢?使用quota -v来查询: [root@linux ~]# quota -vu quser1 quser2 //显示quser1和quser2两个用户的限额 Disk quotas for user quser1 (uid 502): Filesystem blocks quota limit grace files quota limit grace /dev/hdb1 0 45000 50000 0 0 0 Disk quotas for user quser2 (uid 503): Filesystem blocks quota limit grace files quota limit grace /dev/hdb1 0 45000 50000 0 0 0 特别注意到,由于我们的使用者尚未超过45MB,所以grace(宽限时间)就不会出现啦!这样很够清楚了吧?! (6) 编辑群组可使用的空间: [root@linux ~]# edquota -g qgroup Disk quotas for group qgroup (gid 502): Filesystem blocks soft hard inodes soft hard /dev/hdb1 0 80000 90000 0 0 0 [root@linux ~]# quota -vg qgroup Disk quotas for group qgroup (gid 502): Filesystem blocks quota limit grace files quota limit grace /dev/hdb1 0 80000 90000 0 0 0 (7)设定开机时启动quota: 这个部分就不需要担心了,因为Fedora Core 4与Red Hat系列的开机script(/etc/rc.d/rc.sysinit)已经将quota的侦测写入在里头,因此,在预设的情况下,quota是会主 动的被启动的。不过,如果你想要手动的强制quota在开机启动一遍,那么可以使用vi去编辑/etc/rc.d/rc.local,在里面加入一行(直 接加在最后一行即可): [root@linux ~]# vi /etc/rc.d/rc.local /sbin/quotaon -avug 如果要关闭quota就是用quotaoff吧!没错!这样就将quota设定完毕了!很简单吧!!(如果是SuSE Server 9的话,可能就要去修改/etc/init.d/boot.local这个档案了!) (8) 利用repquota显示更完整的quota结果报告: 事实上,除了quota可以用来观察用户与群组使用的quota限制值之外,其实,我们还可以使用更详细的quota报告指令,就是repquota这个命令呢!他的基本用法是这样的: [root@linux ~]# repquota -a [-vug] 参数: -a:直接到/etc/mtab搜寻具有quota标志的filesystem,并报告quota的结果; -v:输出所有的quota结果,而非仅下达指令者自己的quota限值; -u:显示出使用者的quota限值(这是默认值); -g:显示出个别群组的quota限值。 (9)setquota命令:直接于命令行设置quota配额 基本用法: setquota [-u|-g] 用户名/组名 block(soft) block(hard) Inode(soft) inode(hard) 文件系统 例如: 直接在命令行将刚刚设置的quser1的限额更改 [root@linux ~]#quota -u quser1 Disk quotas for user quser1 (uid 502): Filesystem blocks quota limit grace files quota limit grace [root@linux ~]#setquota -u quser1 250000 500000 0 0 /shuangxin [root@linux ~]#quota -u quser1 Filesystem blocks quota limit grace files quota limit grace /dev/hdb1 0 250000 500000 0 0 0 17.LVM 整个一套操作如下: [root@linux ~]#fdisk /dev/dsa //对磁盘进行分区分为sda5,sda6,sda7,记得最后退出时保存 [root@linux ~]#partprobe //立即更新分区信息而不用重新启动系统 (2)建立pv(物理卷) [root@linux ~]#pvcreat /dev/sda5 /dev/sda6 /dev/sda7 //将磁盘sda下的三个分区转换为pv [root@linux ~]#pvdisplay //查看建立好的VG (3)建立VG(卷组) [root@linux ~]#vgcreat vg1 dev/sda5 /dev/sda6 //将刚刚建立好的pv中的两个分配到VG中,将VG命名为vg1 [root@linux ~]#vgdisplay //查看刚建好的VG (4)建立LV(逻辑卷) [root@linux ~]#lvcreat -L 200M -n lv1 vg1 //分配VG中的所有空间,并命名为lv1 (5)使用ext3格式,建立LV的文件系统 [root@linux ~]#mke2fs -j /dev/vg1/lv1 (6)挂载LV分区到目录 [root@linux ~]#mkdir -p /tmp/lvm //创建挂载目录 [root@linux ~]#mount /dev/vg1/lv1 /tmp/lvm //将LV分区挂载好 [root@linux ~]#mount //查看 (7)扩大LV 注意:必须先增大LV,再增大文件系统 [root@linux ~]#df -h //查看lv的大小 [root@linux ~]#vgdisplay //查看vg1的大小 [root@linux ~]#vgextendd vg1 /dev/sda7 //将/dev/sda7加入到vg1中 [root@linux ~]#vgdisplay //查看vg1的大小 [root@linux ~]#lvextent -L +100M /dev/vg1/lv1 //将lv1扩大100M [root@linux ~]#resize2fs /dev/vg1/lv1 //扩大文件系统,使用resize2fs命令让扩展的容量在线生效 [root@linux ~]#df -h //再可以利用df -h查看lv的大小 (8)缩小LV 注意:先缩小文件系统,再缩小LV [root@linux ~]#umount /tmp/lvm //让文件系统离线 [root@linux ~]#e2fsck -f /dev/vg1/lv1 //强制检查文件系统的完整性 [root@linux ~]#lvdisplay //查看lv的大小 [root@linux ~]#resize2fs /dev/vg1/lv1 200M //将文件系统缩小到200M [root@linux ~]#lvresize -L 200M /dev/vg1/lv1 //缩小lv到200M [root@linux ~]#mount /dev/vg1/lv1 /tmp/lvm //挂载文件系统即可使用 (9)删除LV [root@linux ~]#umount /dev/vg1/lv1 //先卸载在删除 [root@linux ~]#lvremove /dev/vg1/lv1 [root@linux ~]#vgremove /dev/vg1 [root@linux ~]#pvremove /dev/sda{5,6,7} 18.常用日志操作指令 [root@linux ~]#who //使用who命令查看当前登陆进系统的用户,不跟任何的参数,读取的是/var/run/utmp,也就是说用户登陆系统之后,其登陆信息暂时存放在/var/run/tmp 里面 [root@linux ~]#who /var/log/wtmp //查看/var/log/wtmp里以往用户登陆信息 19.w [root@linux ~]#w //和who一样查看utmp文件,并显示当前系统中每个用户和它所运行的进程信息 20.user [root@linux ~]#user //单独的打印当前登陆用户信息,如果同一个用户登陆不知一次,那么相同的名称会打印出来多次 21.last [root@linux ~]#last //last从现在往过去搜索/var/log/wtmp登陆过的用户并显示出来,说白了就是和“who /var/log/wtmp” 按时间的升序,而last按时间的降序 [root@linux ~]#lastlog //lastlog在每次有用户登陆时被查询。它的作用就是显示出谁最后一次登陆的信息,或者显示从未登陆过。执行命令后查看曾经登陆过的用户。 一旦有黑客入侵了,可以用该命令查看哪些用户登陆过系统。 21.ac [root@linux ~]#ac //根据/var/log/wtmp文件,统计当前用户登陆系统和退出系统的连续时间(单位小时),如果不加选项则显示总时间 [root@linux ~]#ac,ac -d //显示当前用户登陆的总时间,两条命令同时输出表示,先执行ac,再执行ac -d,这样就分别显示了总时间和每天的登录时间 22.accton accton //作用是统计账号的一些信息,既然是统计了,那么就要有放统计出来的内容,默认系统时关闭这个功能的。 [root@linux ~]#accton /var/account/pacct //意思是记录的信息往/var/account/pacct里面仍,pacct这个文件默认是存在的,想要停止记录,只要输入accton命令即可 23.lastcomm lastcomm 这个命令是与上面的accton配合使用的,accton是打开统计功能,而lastcomm是通过查询accton的记录文件/var/account/pacct来显示以往使用过的命令 主要选项如下: --strict-match 精确匹配每一行 --user name 只显示指定用户的命令记录 --command naem 只显示指定命令记录 --tty naem 只显示指定终端上运行的命令 -f filenaem 指定一个命令记录文件来代替默认文件---acct --debug 打印其它内核信息 -V,--version 打印版本 -h --help 打印概要和系统默认统计文件 例如: [root@linux ~]#lastcomm --user root -f /var/account/pact //使用lastcomm命令查看root用户运行过哪些命令 注意:accton和lastcomm这种机制不宜长久打开,试想每条命令都记录下来,这个文件会越来越大,这不好,当我们怀疑系统被入侵时,可以考虑这种机制,这就是系统默认不打开accton的原因 24.sa sa命令 :报告、清理并维护进程统计文件 作用:sa命令把/var/log/pacct中的信息压缩到摘要文件/var/log/savacct和/var/log/usracct中,报告、清理并维护进程统计文件。 用法:sa [选项]... [文件]... 主要选项如下: — -a:打印所有命令的名称(包括那些带有不可打印字符的)。 — -b:将输出按用户和系统时间的总和除以调用次数来进行分类。否则,输出为用户时间和系统时间之和。 — -c:将每个命令使用时间打印为相对于所有命令使用时间的百分比。此外,还有用户、系统和实时。 — -C:将记账文件合并到摘要文件中。如果摘要文件为旧用法,则将它转换为新用法。 — -d:将输出按平均磁盘I/O操作数进行分类。 — -D:将输出按总的磁盘I/O操作数进行分类和打印。 — -f:不要强制进行交互式阈值压缩。此标志必须与-v标志一起使用。 — -I:仅读取原始数据,不读取摘要文件。 — -j:打印每个调用的秒数,而不是每个类别的总的分钟数。 — -k:将输出按平均CPU时间进行分类。 — -K:将输出按CPU存储量整数进行分类和打印。 — -l:将系统时间和用户时间分离,而不是组合它们。 — -m:打印每个用户的进程数和CPU分钟数。 — -n:按调用数对输出进行分类。 — -r:将分类的顺序倒置。 — -s:将记账文件合并到摘要文件中。 — -t:打印每个命令的用时与用户和系统时间和之比。 — -u:暂挂所有其他标志并且打印每个命令的用户数字标识和命令名。 25.logger 说明:它可以主动记日志,可以理解为是syslog为各种应用程序提供的一个接口,就是给其他服务提供记日志的命令 [root@linux ~]#ping -c2 172.30.209.254 | logger -it logger_test -p authpriv.info 解释:这里有两条命令,第一条是ping命令,使用ping命令ping了2次172.30.209.254 第二条命令就是主动记日志命令,选项有: -i 记录进程号、 -t 表示每个记录都加上后面的标签logger_test -p 表示设置的级别和设备 26.logrotate 说明:日志轮转所使用的命令,其实日志轮转就是一个命令,配合一个配置文件,再加上计划任务,每天执行一次来达到循环的效果 27.date [root@linux ~]#date -s "2015/1/29 17:16" //修改系统时间 [root@linux ~]#clock -w //将时间修改保存到 BIOS [root@linux ~]#cal 2007 //显示2007年的日历表 28.at [root@linux ~]#at now+5 minutes at> /bin/mail root -s "test at job" </root/.bashrc at><EOF> //这里按住Ctrl+d就会出现<EOF>这个标志,代表任务输入结束 job 6 at 2015-1-29 17:21 注意:这里的now+5 minutes效果是从你敲完at这条命令开始计时的,下面的邮件如果超过5分钟没有敲完,那么就很可能这个任务执行不了 [root@linux ~]#at -c 6 //先用atq查询任务号以后,-c用来查询任务详细 [root@linux ~]#at -l //用来查询at任务,也可以使用atq,其效果是一样的 [root@linux ~]#at -d 6 //如果设置好上面的任务后又后悔了,先用atq确认计划任务号是6号,然后使用该命令取消任务 at [-mldvc] TIME 选项与参数: -m 当at的工作完成后,发一封邮件通知使用者该工作已完成 -l at -l 相当于atq,列出目前系统上面所有当前用户的at任务 -d at -d相当于atrm,可以取消一个工作任务 -v 使用较明显的时间格式输出at任务中的工作 -c 可以列出后面接的该项目计划的实际内容 TIME:时间格式,就是定义什么时候执行任务 HH:MM 例如:04:00,在今日的HH:MM时刻执行,若该时刻已经过了,则明天的该时刻执行该任务 HH:MM YYYY-MM-DD 例如:04:00 2015-1-30,强制规定某月某日的某个时刻执行该任务 HH:MM[am|pm] + number [minutes|hours|days|weeks] 例如:now+5 minutes,或者04pm+3 days等等,就是在某个时间点再加几个时间后才进行计划任务 常用的时间点有: now 表示现在 noon 表示中午12:00 teatime 表示下午16:00 29.sync 说明:它是一个linux同步命令,含义为迫使缓冲块数据立即写盘并更新超级块。 30.batch 说明:这个命令和at命令差不多 区别:batch只有在系统工作负载小于0.8的时候,才执行你所设置的工作任务,然而at命令则没有这个功能 31.crontab [root@linux ~]#service crond restart //首先启动crond服务 [root@linux ~]#cat /etc/crontab //cron服务的配置文件,一切的循环周期任务都在这个配置文件里面,系统每一分钟会扫描一次该文件,看有没有需要执行的任务 常用选项: -u 只有root用户才能使用的参数,即帮助其他用户创建/删除crontab任务 -e 编辑crontab任务,可以增加、修改、和删除crontab任务 -l 查询crontab任务的内容 -r 删除所有crontab任务,也就是清空crontab任务 设置时间格式,例如: [root@linux ~]#cat /var/spool/cron/root //在/var/spool/cron/目录下每个用户的计划任务都会以自己的名字命名,内容便是crontab -e所设置的内容 * * * * * /bin/bash /root/shutdown.sh 分钟 小时 日期 月份 周 命令 * 代表任何时刻,如出现在显示字段就表示24小时都有效 , 表示分隔,如出现在月份的1,3,5则意为这三个月都有效 - 代表一段时间,如分钟字段的0-29代表每小时的前30分钟 /n 代表每隔n个时间单位有效,如分钟字段的*/5,表示每隔5分钟执行一次 [root@linux ~]#crontab -e //打开编辑界面 */5 * * * * /bin/bash /home/sxkeji/test/sh 0 8 1 1,3,5,7-8,10,12 * /bin/mail sxkeji</home/sxkeji/remind.txt 32.ps [root@linux ~]#ps -l //通过PID和PPID来进行最直观的判断父进程和子进程,PPID表示父进程 33. [root@linux ~]#echo ¥SHELL //可以查看当前的shell环境 34. [root@linux ~]#ps aux //查看系统所有的进程 35.top [root@linux ~]#top //动态的查看进程的变化 36.uptime [root@linux ~]#uptime //简单的查询系统负载 37.pstree [root@linux ~]#pstree //以树结构显示系统进程,它会列出一个进程下面被分为的几个线程,并非是它的子进程 基本用法:pstree [option] 常见参数:-p 同时列出每个进程的pid(常用) -A 各进程之间连接已ASCII字符连接 38.pgrep [root@linux ~]#pgrep ? 基本用法:pgrep [option] 常用参数:-P 大写的P参数后面指定的PPID(父进程),列出该父进程的所有子进程 -u 匹配进程的有效用户身份 39.nice 说明:新执行的命令给予特点的nice值 基本用法: nice [option] [commad] 常用参数: -n 后面接值,范围是-20~19;若是普通用户的话就是0~19 例如: [root@linux ~]#nice -n 10 vi a & //执行vi,并给予优先级10,查看进程,&符号表示将其放到后台运行 [root@linux ~]#ps -l //显示内容当中有一项NI的条目,进程vi的值是10 40.renice 说明:调整进程的优先级 例如: [root@linux ~]#ps -l //假设看到的vi的优先级是10 [root@linux ~]#renice -5 5237 //调整vi进程的优先级为5,5237是vi进程的进程号(PID) 41.ctrl+z 说明:将正在执行的进程丢到后台暂停的指令 例如:当我们正在系统编辑一个文件,这时突然有个路径不知道在哪时,只需要执行ctrl+z指令,就可以把它丢到后台中等待,等你忙完了再回来继续执行即可 [root@linux ~]#vi a [3]+ stopped vim a [root@linux ~]# //这是回到了前台,而进程处于停止状态 按下[ctrl]+z两个键后,屏幕上出现[3],表示这是后台第三个作业,哪个+代表最近一个被丢进后台的工作,而且目前在后台下会默认取用那个工作(与fg命令有关),stopped代表该进程正处于暂停状态 42.jobs [root@linux ~]#jobs [-lrs] //列出所有的后台作业 参数:-l 除了列出工作号码与命令串之外,同时列出PID号 -r 仅列出正在后台运行的工作 -s 仅列出正在后台暂停的工作 不加参数的话就列出所有的后台工作 43.fg [root@linux ~]#fg %jobnumber //使用该命令能够将工作从后台拿回来 参数: %jobnumber 就是工作号码,“%”是可有可无的,随个人习惯 如果不加任何的参数的话,就会默认将由“+”的那个作业拿到前台执行,如果执行“ fg -”也可以将带有“ - ”号的作业调到前台执行 44.bg 说明:它可以让在后台暂停的工作在后台跑起来 [root@linux ~]#jobs [7]- stopped vim a [8]+ stopped sleep 500 [root@linux ~]#bg 8 //将工作号为8的作业由暂停变为运行 [8]+ sleep 500 & [root@linux ~]#jobs [7]- stopped vim a [8]- Running sleep 500 & 45.kill 说明:kill命令用于结束系统进程 基本用法:kill [-s single | -p ] pid ... 常用参数:-1 重新读取一次参数的配置文件 -2 代表有键盘输入[ctrl]+c同样的操作 -9 立刻强制删除一个工作(常用) -15 以正常的程序方式终止一项工作,与-9不一样 46.killall 说明:通过进程名结束进程,该命令一般直接接进程名,就可以结束进程 基本用法:killall [option] name 常用参数:-q --quiet :如果没有进程被结束的话不显示提示信息 -u --user :结束指定所有者的进程 47.pkill 说明:通过给定名称或其他属性结束进程 基本用法:pkill [option] 常用参数:-P 后面接PPID,删除该父进程下所有的子进程 -u 后面接用户身份,删除指定用户身份下的所有进程 注意:在练习这个命令的时候千万小心,譬如执行一个指令 pkill -P 1 之后我们的系统会崩掉,你已经将系统的所有进程都结束了。 还有像pkill -u root之类的命令千万别随便执行 48.free 说明:查看刺痛内存使用情况 基本用法:free [option] 常用参数:-k 以kb的形式显示内存信息 -m 以MB的形式显示内存信息 49.pwd [root@linux ~]#pwd //显示当前所在路径 50.uname [root@linux ~]#uname -r //显示正在使用的内核版本 [root@linux ~]#cat /proc/version //显示内核的版本 [root@linux ~]#uname -m //显示机器的处理器架构 51.arch //显示机器的处理器架构 52.(定时)关机,注销,重启命令 [root@linux ~]#shutdown -h now //关闭系统 [root@linux ~]#init 0 //关闭系统 [root@linux ~]#telinit 0 //关闭系统 [root@linux ~]#shutdown -h hours:minutes & // 按预定时间关闭系统 [root@linux ~]# shutdown -c //取消按预定时间关闭系统 [root@linux ~]# shutdown -r now //重启 [root@linux ~]# reboot //重启 [root@linux ~]# logout //注销 53.cd [root@linux ~]#cd /home //进入 '/ home' 目录' [root@linux ~]#cd .. //返回上一级目录 [root@linux ~]#cd ../.. //返回上两级目录 [root@linux ~]#cd ~user1 //进入个人的主目录 [root@linux ~]#cd - //返回上次所在的目录 54.ls [root@linux ~]#ls //查看目录中的文件 [root@linux ~]#ls -F //查看目录中的文件 [root@linux ~]#ls -l //显示文件和目录的详细资料 [root@linux ~]#ls -a //显示隐藏文件 [root@linux ~]#ls *[0-9]* //显示包含数字的文件名和目录名 55.tree [root@linux ~]#tree //显示文件和目录由根目录开始的树形结构 56.mkdir [root@linux ~]#mkdir dir1 //创建一个叫做 'dir1' 的目录' [root@linux ~]#mkdir dir1 dir2 //同时创建两个目录 [root@linux ~]#mkdir -p /tmp/dir1/dir2 创建一个目录树 57.rm -rf [root@linux ~]#rm -f file1 //删除一个叫做 'file1' 的文件' [root@linux ~]#rmdir dir1 //删除一个叫做 'dir1' 的目录' [root@linux ~]#rm -rf dir1 //删除一个叫做 'dir1' 的目录并同时删除其内容 [root@linux ~]#rm -rf dir1 dir2 //同时删除两个目录及它们的内容 58.move [root@linux ~]#mv dir1 new_dir 重 //命名/移动 一个目录 59.cp [root@linux ~]#cp file1 file2 //复制一个文件 [root@linux ~]#cp dir/* . //复制一个目录下的所有文件到当前工作目录 [root@linux ~]#cp -a /tmp/dir1 . //复制一个目录到当前工作目录 [root@linux ~]#cp -a dir1 dir2 //复制一个目录 60.touch [root@linux ~]#touch -t 0712250000 file1 //修改一个文件或目录的时间戳 - (YYMMDDhhmm) 61.file [root@linux ~]#find / -name file1 //从 '/' 开始进入根文件系统搜索文件和目录 [root@linux ~]#find / -user user1 //搜索属于用户 'user1' 的文件和目录 [root@linux ~]#find /home/user1 -name \*.bin //在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件 [root@linux ~]#find /usr/bin -type f -atime +100 //搜索在过去100天内未被使用过的执行文件 [root@linux ~]#find /usr/bin -type f -mtime -10 //搜索在10天内被创建或者修改过的文件 [root@linux ~]#find / -name \*.rpm -exec chmod 755 '{}' \; //搜索以 '.rpm' 结尾的文件并定义其权限 [root@linux ~]#find / -xdev -name \*.rpm //搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备 62.loacte [root@linux ~]# locate \*.ps //寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令 63.whereis [root@linux ~]#whereis halt //显示一个二进制文件、源码或man的位置 64.which [root@linux ~]#which halt //显示一个二进制文件或可执行文件的完整路径 65.useradd [root@linux ~]#useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 //创建一个属于 "admin" 用户组的用户 [root@linux ~]#useradd user1 //创建一个新用户 [root@linux ~]#userdel -r user1 //删除一个用户 ( '-r' 排除主目录) [root@linux ~]#usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 //修改用户属性 66.groupadd [root@linux ~]#groupadd group_name //创建一个新用户组 [root@linux ~]#groupdel group_name //删除一个用户组 [root@linux ~]#groupmod -n new_group_name old_group_name //重命名一个用户组 67.passwd [root@linux ~]#passwd //修改口令 [root@linux ~]#passwd user1 //修改一个用户的口令 (只允许root执行) 68. chage -E 2005-12-31 user1 //设置用户口令的失效期限 69. pwck //检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户 70. grpck //检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组 71. newgrp group_name //登陆进一个新的群组以改变新创建文件的预设群组 72.chmod [root@linux ~]#chmod ugo+rwx directory1 //设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限 [root@linux ~]#chmod go-rwx directory1 //删除群组(g)与其他人(o)对目录的读写执行权限 [root@linux ~]#chown user1 file1 //改变一个文件的所有人属性 [root@linux ~]#chown -R user1 directory1 //改变一个目录的所有人属性并同时改变改目录下所有文件的属性 [root@linux ~]#chgrp group1 file1 //改变文件的群组 [root@linux ~]#chown user1:group1 file1 //改变一个文件的所有人和群组属性 [root@linux ~]#find / -perm -u+s //罗列一个系统中所有使用了SUID控制的文件 [root@linux ~]#chmod u+s /bin/file1 //设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限 [root@linux ~]#chmod u-s /bin/file1 //禁用一个二进制文件的 SUID位 [root@linux ~]#chmod g+s /home/public //设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的 [root@linux ~]#chmod g-s /home/public //禁用一个目录的 SGID 位 [root@linux ~]#chmod o+t /home/public //设置一个文件的 STIKY 位 - 只允许合法所有人删除文件 [root@linux ~]#chmod o-t /home/public //禁用一个目录的 STIKY 位 73.chattr 文件的特殊属性 - 使用 "+" 设置权限,使用 "-" 用于取消 [root@linux ~]#chattr +a file1 //只允许以追加方式读写文件 [root@linux ~]#chattr +c file1 //允许这个文件能被内核自动压缩/解压 [root@linux ~]#chattr +d file1 //在进行文件系统备份时,dump程序将忽略这个文件 [root@linux ~]#chattr +i file1 //设置成不可变的文件,不能被删除、修改、重命名或者链接 [root@linux ~]#chattr +s file1 //允许一个文件被安全地删除 [root@linux ~]#chattr +S file1 //一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘 [root@linux ~]#chattr +u file1 //若文件被删除,系统会允许你在以后恢复这个被删除的文件 [root@linux ~]#lsattr //显示特殊的属性 74.bunzip 打包和压缩文件 [root@linux ~]#bunzip2 file1.bz2 //解压一个叫做 'file1.bz2'的文件 [root@linux ~]#bzip2 file1 //压缩一个叫做 'file1' 的文件 75.gunzip [root@linux ~]#gunzip file1.gz //解压一个叫做 'file1.gz'的文件 [root@linux ~]#gzip file1 //压缩一个叫做 'file1'的文件 [root@linux ~]#gzip -9 file1 //最大程度压缩 76.rar [root@linux ~]#rar a file1.rar test_file //创建一个叫做 'file1.rar' 的包 [root@linux ~]#rar a file1.rar file1 file2 dir1 //同时压缩 'file1', 'file2' 以及目录 'dir1' [root@linux ~]#rar x file1.rar // 解压rar包 [root@linux ~]#unrar x file1.rar //解压rar包 77.tar [root@linux ~]#tar -cvf archive.tar file1 //创建一个非压缩的 tarball [root@linux ~]#tar -cvf archive.tar file1 file2 dir1 //创建一个包含了 'file1', 'file2' 以及 'dir1'的档案文件 [root@linux ~]#tar -tf archive.tar //显示一个包中的内容 [root@linux ~]#tar -xvf archive.tar //释放一个包 [root@linux ~]#tar -xvf archive.tar -C /tmp //将压缩包释放到 /tmp目录下 [root@linux ~]#tar -cvfj archive.tar.bz2 dir1 //创建一个bzip2格式的压缩包 [root@linux ~]#tar -xvfj archive.tar.bz2 //解压一个bzip2格式的压缩包 [root@linux ~]#tar -cvfz archive.tar.gz dir1 //创建一个gzip格式的压缩包 [root@linux ~]#tar -xvfz archive.tar.gz //解压一个gzip格式的压缩包 78.zip [root@linux ~]#zip file1.zip file1 //创建一个zip格式的压缩包 [root@linux ~]#zip -r file1.zip file1 file2 dir1 //将几个文件和目录同时压缩成一个zip格式的压缩包 [root@linux ~]#unzip file1.zip //解压一个zip格式压缩包 79. 查看文件内容 [root@linux ~]#cat file1 //从第一个字节开始正向查看文件的内容 80. [root@linux ~]#tac file1 //从最后一行开始反向查看一个文件的内容 81. [root@linux ~]#more file1 //查看一个长文件的内容 82. [root@linux ~]#less file1 //类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作 [root@linux ~]#head -2 file1 //查看一个文件的前两行 84. [root@linux ~]#tail -2 file1 // 查看一个文件的最后两行 85. [root@linux ~]#tail -f /var/log/messages //实时查看被添加到一个文件中的内容 86.grep [root@linux ~]#grep Aug /var/log/messages //在文件 '/var/log/messages'中查找关键词"Aug" [root@linux ~]#grep ^Aug /var/log/messages //在文件 '/var/log/messages'中查找以"Aug"开始的词汇 [root@linux ~]#grep [0-9] /var/log/messages //选择 '/var/log/messages' 文件中所有包含数字的行 [root@linux ~]#grep Aug -R /var/log/* //在目录 '/var/log' 及随后的目录中搜索字符串"Aug" 88.sed [root@linux ~]#sed 's/stringa1/stringa2/g' example.txt //将example.txt文件中的 "string1" 替换成 "string2" [root@linux ~]#sed '/^$/d' example.txt //从example.txt文件中删除所有空白行 [root@linux ~]#sed '/ *#/d; /^$/d' example.txt //从example.txt文件中删除所有注释和空白行 [root@linux ~]#echo 'esempio' | tr '[:lower:]' '[:upper:]' //合并上下单元格内容 [root@linux ~]#sed -e '1d' result.txt //从文件example.txt 中排除第一行 [root@linux ~]#sed -n '/stringa1/p' //查看只包含词汇 "string1"的行 [root@linux ~]#sed -e 's/ *$//' example.txt //删除每一行最后的空白字符 [root@linux ~]#sed -e 's/stringa1//g' example.txt //从文档中只删除词汇 "string1" 并保留剩余全部 [root@linux ~]#sed -n '1,5p;5q' example.txt //查看从第一行到第5行内容 [root@linux ~]#sed -n '5p;5q' example.txt //查看第5行 [root@linux ~]#sed -e 's/00*/0/g' example.txt //用单个零替换多个零 89.echo [root@linux ~]#echo a b c | awk '{print $1}' //查看一行第一栏 [root@linux ~]#echo a b c | awk '{print $1,$3}' //查看一行的第一和第三栏 90.paste [root@linux ~]#paste file1 file2 //合并两个文件或两栏的内容 [root@linux ~]#paste -d '+' file1 file2 //合并两个文件或两栏的内容,中间用"+"区分 91.sort [root@linux ~]#sort file1 file2 //排序两个文件的内容 [root@linux ~]#sort file1 file2 | uniq //取出两个文件的并集(重复的行只保留一份) [root@linux ~]#sort file1 file2 | uniq -u //删除交集,留下其他的行 [root@linux ~]#sort file1 file2 | uniq -d //取出两个文件的交集(只留下同时存在于两个文件中的文件) 92.comm [root@linux ~]#comm -1 file1 file2 //比较两个文件的内容只删除 'file1' 所包含的内容 [root@linux ~]#comm -2 file1 file2 //比较两个文件的内容只删除 'file2' 所包含的内容 [root@linux ~]#comm -3 file1 file2 //比较两个文件的内容只删除两个文件共有的部分 93.dump [root@linux ~]#dump -0aj -f /tmp/home0.bak /home //制作一个 '/home' 目录的完整备份 [root@linux ~]#dump -1aj -f /tmp/home0.bak /home //制作一个 '/home' 目录的交互式备份 94.restore [root@linux ~]#restore -if /tmp/home0.bak //还原一个交互式备份 95.rsync [root@linux ~]#rsync -rogpav --delete /home /tmp //同步两边的目录 [root@linux ~]#rsync -rogpav -e ssh --delete /home ip_address:/tmp //通过SSH通道rsync [root@linux ~]#rsync -az -e ssh --delete ip_addr:/home/public /home/local //通过ssh和压缩将一个远程目录同步到本地目录 [root@linux ~]#rsync -az -e ssh --delete /home/local ip_addr:/home/public //通过ssh和压缩将本地目录同步到远程目录 96.mkiosfs [root@linux ~]#mkisofs /dev/cdrom > cd.iso //在磁盘上创建一个光盘的iso镜像文件 [root@linux ~]#mkisofs /dev/cdrom | gzip > cd_iso.gz //在磁盘上创建一个压缩了的光盘iso镜像文件 [root@linux ~]#mkisofs -J -allow-leading-dots -R -V "Label CD" -iso-level 4 -o ./cd.iso data_cd //创建一个目录的iso镜像文件