显示Linux系统当前的磁盘配额运行状态信息.
以报表的格式输出指定分区,或者文件系统的磁盘配额信息.
-a: 列出在/etc/fstab文件里,有加入quota设置的分区的使用状况,包括用户和群组;
-g: 列出所有群组的磁盘空间限制;
-u: 列出所有用户的磁盘空间限制;
-v: 显示该用户或群组的所有空间限制.
显示所有文件系统的磁盘使用情况:
repquota -a
将老的磁盘额数据文件 ("quota.user" 和 "quota.group") 转换为新格式的文件 ("quota.user"和"quota.group).
-u: 仅转换用户磁盘配额数据文件;
-g: 仅准换组磁盘配额数据文件;
-f: 将老大磁盘配额文件转换为新的格式;
-c: 将新的文件格式从大字节序换为小字节序.
convertquota -u /data //转换文件系统"/data"上的用户磁盘配额文件
关闭指定的交换分区 (包括交换文件和交换分区).
swapoff实际上为swapon的符号链接,可用来关闭系统的交换区.
激活Linux系统中交换分区, Linux系统的内存管理必须使用交换区来建立虚拟内存.
swapon /dev/sda3: 激活新建的交换分区
强制被改变的内容立刻写入磁盘,更新超块信息.
在Linux/Unix系统中,在文件或数据处理过程中一般限放到内存缓冲区中,等到适当的时候再写入磁盘,以提高系统的运行效率.
sync命令则可用来强制将内存缓冲区中的数据立即写入磁盘中.
用户通常不需执行sync命令,系统会自动执行update或bdflush操作,将缓冲区的数据写入磁盘.
只有在update或bdflush无法执行或用户需要非正常关机时, 才需手动执行sync命令.
如果不去手动的输入sync命令来真正的去写磁盘,
linux系统也会周期性的去sync数据.
在指定的根目录下运行指令.
chroot, 即changerootdirectory (更改root目录).
在linux系统中, 系统默认的目录结构都是以/,即是以根(root)开始的.
而在使用chroot之后,系统的目录结构将以指定的位置作为/位置.
根用户才可以使用此命令.
getent命令可以用来查看系统的数据库中的相关记录.
getent hosts
getent passwd mysql
getent passwd (等同于cat /etc/passwd)
getent shadow (等同于cat /etc/shadow)
显示用户最近登陆的信息.单独执行last命令,它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来.-a: 把从何处登入系统的主机名称或ip地址,显示在最后一行;-d: 将IP地址转换成主机名称;-f<记录文件>: 指定记录文件.-n<显示列数>或<显示列数>: 设置列出名单的显示列数;-R: 不显示登入系统的主机名称或IP地址;-x: 显示系统关机,重新开机,以及执行等级的改变等信息.
显示用户错误的登陆列表,此指令可以发现系统的登陆异常.单独执行lastb命令,它会读取位于/var/log目录下,名称为btmp的文件,并把该文件内容记录的登入失败的用户名单,全部显示出来.首次运行lastb命令若报目录不存在的错误,需要touch /var/log/btmp建立一个目录.使用ssh的登陆失败不会记录在btmp文件中.参考命令lastb |head
显示系统中所有用户最近一次登陆信息.lastlog文件在每次有用户登录时被查询.可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容.它根据UID排序显示登录名,端口号(tty) 和上次登录时间.如果一个用户从未登录过,lastlog显示**Neverlogged**.注意需要以root身份运行该命令.-b<天数>: 显示指定天数前的登录信息;-h: 显示召集令的帮助信息;-t<天数>: 显示指定天数以来的登录信息;-u<用户名>: 显示指定用户的最近登录信息.
对系统日志进行轮转,压缩和删除,也可以将日志发送到指定邮箱.使用logrotate指令,可让你轻松管理系统所产生的记录文件.每个记录文件都可被设置成每日, 每周或每月处理,也能在文件大大时立即处理.您必须自行编辑, 指定配置文件,预设的配置文件存放在/etc/logrotate.conf文件中.-d或--debug: 详细显示指令执行过程,便于排错或了解程序执行的情况;-f或--force: 强行启动记录文件维护操作,纵使logrotate指令认为没有需要亦然;-s<状态文件>或--state=<状态文件>: 使用指定的状态文件;-usage: 显示指令基本用法.
运行给定的命令,并将命令的输出信息保存到指定的日志文件中.-a: 追加信息到指定的日志文件中.
一个可定制和可插入式的日志监视系统,它通过遍历给定时间范围内的系统日志文件而产生日志报告.logwatch默认每天执行一次,可以从/etc/cron.daily里看到.logwatch --detail High --Service All --range All --point基本就可以显示出所有日志的情况了;logwatch --service sshd --detail High 只看sshd的日志情况.
一个强大的安全套接字层密码库, 囊括主要的密码算法,常用的密钥和证书封装管理功能及SSL协议, 并提供丰富的应用程序供测试或其它目的使用.在OpenSSL被爆出现严重安全漏洞后,发现多数通过SSL协议加密的网站使用名未OpenSSL的开源软件包.由于这是互联网应用最广泛的安全传输方法,被网银,在线支付,电商网站,门户网站,电子邮件等重要网站广泛使用,所以该漏洞影响范围广大.OpenSSL有两种运行模式: 交互模式和批处理模式. 用SHA1算法计算文件file.txt的哈希值,输出到stdout: openssl dgst -sha1 file.txt
以其它身份来执行命令, 预设的身份为root.在/etc/sudoers中设置了可执行sudo指令的用户.若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员.用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限必须重新输入密码.配置sudo必须通过编辑/etc/suders文件,而且只有超级用户才可以修改它,还必须使用visudo编辑.之所以使用visudo有两个原因,一是它能够防止两个用户同时修改它;二是它也能够进行有限的语法检查.所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法.sudo reboot (重启系统,在无ROOT权限的情况下)
设置组合键 "Ctrl+Alt+Del" 的功能为Hard或者Soft,默认为Soft.Hard: 当按下 "Ctrl+Alt+Del" 时,立即执行重新启动操作系统, 而不是先调用sync系统调用和其它的关机标准操作.Soft: 当按下 "Ctrl+Alt+Del" 时, 首先向init进程发送SIGINT(interrupt) 信号.由init进程处理关机操作.
关闭正在运行的Linux操作系统,它的使用权限是超级用户.-d: 关闭系统但不在wtmp中留下记录;-f: 不论目前的runlevel为何,不调用shutdown即强制关闭系统;-i: 在halt之前,关闭全部的网络界面;-n: halt前,不用先执行sync;-p: halt之后,执行poweroff,即关闭系统后关闭电源;-w: 仅在wtmp中记录,而不实际结束系统.halt就是调用shutdown -h.halt执行时,杀死应用进程,执行sync(将存于buffer中的资料强制写入硬盘中)系统调用,文件系统写操作完成后就会停止内核.halt命令会先监测系统的runlevel,若系统的运行级别为0或6,则关闭系统;否则以shutdown指令(加上-h参数)来取代.
关闭计算机操作系统并且切断电源.如果确认系统中已经没有用户存在且所有数据都已经保存,需要立即关闭系统,可以使用poweroff命令.-n: 关闭操作系统时不执行sync操作;-w: 不真正关闭操作系统,仅在日志文件"/var/log/wtmp"中;-d: 关闭操作系统时,不将操作写入日志文件"/var/log/wtmp"中添加相应的记录;-f: 强制关闭操作系统;-i: 关闭操作系统之前关闭所有的网络接口;-h: 关闭操作系统之前将系统中所有的硬件设置为备用模式.
重新启动正在运行的Linux操作系统.-d: 重新开机时不把数据写入记录文件/var/tmp/wtmp.本参数具有 "-n" 参数效果;-f: 强制重新开机,不调用shutdown指令的功能;-i: 在重开机之前,先关闭所有网络界面;-n: 重开机之前不检查是否有未结束的程序;-w: 仅作测试,并不真正将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件.sudo reboot (在无ROOT权限的情况下重启系统)
关机命令.shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作.-c: 当执行 "shutdown -h 11:50" 指令时,只要按+键就可以中断关机的指令;-f: 重新启动时不执行fsck;-F: 重新启动时执行fsck;-h: 将系统关机;-k: 只是送出信息给所有用户,但不会实际关机;-n: 不调用init程序进行关机,而由shutdown自己进行;-r: shutdown之后重新启动;-t<秒数>: 送出警告信息何删除信息之间要延迟多少秒.指定现在立即关机: shutdown -h now,指定再过10分钟后自动关机: shutdown -h +10 指定现在立即重启: shutdown -r now指定5分钟后关机,同时送出警告信息给登入用户: shutdown +5 "System will shutdown after 5 minutes" shutdown -h 3:40: 说明3:40开始关机.
修改账号何密码的有效期限.可以编辑/etc/login.defs来设定几个参数,以后设置口令默认就按照参数设定为准.-m: 密码可更改的最小天数.为零时代表任何时候都可以更改密码.-M: 密码保持有效的最大天数.-w: 用户密码到期前,提前收到警告信息的天数.-E: 账号到期的日期.过了这天, 此账号将不可用.-d: 上一次更改的日期.-i: 停滞时期.如果一个密码已经过期这些天.那么此账号将不可用.-l: 列出当前的设置.由非特权用户来确定他们的密码或账号何时过期.
批量更新用户口令的工具,是把一个文件内容重新定向添加到/etc/shadow中.-e: 输入的密码是加密后的密文;-m: 当被支持的密码未被加密时,使用MD5加密代替DES加密.先创建用户密码对应文件,格式为 username:passwd, 如abc:abc123, 必须以这种格式来书写,并且不能有空行,保存成文本文件user.txt,然后执行chpasswd命令:chpasswd < user.txt以上是运用chpasswd 命令来批量修改密码.是linux系统管理中的捷径.
更换登录系统时使用shell.若不指定任何参数与用户名称,则chsh会以应答的方式进行设置.Linux下有多种Shell,一般缺省的是Bash,如果想更换Shell类型可以使用chsh命令.先输入账户密码,然后输入新Shell类型,如果操作正确系统会显示 "Shell change".查看当前正在使用的shell: echo $SHELL (SHELL一定要是大写) 把shell修改为/bin/bash: chsh -s /bin/bash 把我的shell改成zsh: chsh -s /bin/zsh 查看系统安装了哪些shell的两种方法: chsh -l 或者 cat /etc/shells
查找并显示用户信息.包括本地与远端主机的用户皆可,账号名称不分大小写.单独执行finger会显示本地主机现在所有的用户的登录信息,包括账号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址何电话.不指定finger的选项如果提供操作者的话,缺省设为-l输出风格,否则为-s风格,注意在两种格式中,如果信息不足,都有一些域可能丢失,如果没有指定参数finger会为当前登录的每个用户打印一个条目.如果要查询远程机上的用户信息,需要在用户名后面接@主机名,采用用户名@主机名的格式, 不过要查询的网络主机需要运行finger守护进程的支持.-l: 列出该用户的账号名称, 真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,还有计划文件何方案文件内容;-m: 排除查找用户的真实姓名;-s: 列出该用户的账号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话;-p: 列出该用户的账号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,但不显示该用户的计划文件和方案文件内容.
改变finger命令显示的信息.这些信息都存放在/etc目录里的passwd文件里.若不指定任何选项,则chfn命令会进入问答式界面.-f<真实姓名>或--full-name<真实姓名>: 设置真实姓名;-h<家中电话>或--home-phone<家中电话>:设置家中的电话号码;-o<办公地址>或--office<办公地址>: 设置办公室的地址;-p<办公电话>或 --office-phone<办公电话>: 设置办公室的电话号码.改变账号真实姓名: chfn -f jack
Linux下工作组文件/etc/group和/etc/gshadow管理工具.添加用户到某一个组 可以使用usermod -G group_name user_name这个命令可以添加一个用户到指定的组,但是以前添加的组就会清空掉.添加一个用户到一个组,同时保留以前添加的组: gpasswd -a user_name group_name
创建一个新的工作组,新工作组的信息将被添加到系统文件中.-g: 指定新建工作组的id;-r: 创建系统工作组, 系统工作组的组ID小于500;-K: 覆盖配置文件 "/etc/login.defs";-o: 允许添加组ID号不唯一的工作组.建立一个新组,并设置组ID加入系统: groupadd -g 344 linuxde 此时在/etc/passwd文件中产生一个组ID (GID)是344的项目.
删除指定的工作组,本命令要修改的系统文件包括/etc/group和/etc/gshadow.若该群组中仍然包括某些用户,则必须先删除这些用户名,方能删除群组.groupadd damon //创建damon工作组groupdel damon //删除这个工作组
更改群组识别码或名称.需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作.-g<群组识别码>: 设置欲使用的群组识别码;-o: 重复使用群组识别码;-n<新群组名称>: 设置欲使用的群组名称.
在标准输入输出设备上输出指定用户所在组的组成员,每个用户属于/etc/passwd中指定的一个组和在/etc/group中指定的其它组.显示linux用户所属的组: groups linux
验证组文件的完整性,在验证之前,需要先
锁定(lock)组文件/etc/group和/etc/shadow.grpck命令检查数据是否正确存放,每条记录是否都包含足够的信息,是否有一个唯一的组名,是否包含正确的用户,是否正确设置了组的管理员等.grpck检查发现错误以后,在命令行提示用户是否删除错误的记录.如果用户没有明确回答删除记录,grpck终止运行.-r: 只读模式;-s: 排序组id.对组账号和影子文件进行验证;grpck //必须以管理员身份运行grpck /etc/group /etc/gshadow //后面两句一样,如果没有输出信息,则标示没有错误.
开启群组的投影密码.Linux系统里的用户和群组密码,分别存放在/etc/目录下的passwd和group文件中.因系统运作所需,任何人都得以读取它们,造成安全上的破绽.投影密码将文件内的密码改存在/etc目录下的shadow和gshadow文件内,只允许系统管理者读取,同时把原密码置换为"x"字符.投影密码的功能可随时开启或关闭,您只需执行grpconv指令就能开启群组投影密码.
关闭群组的投影密码.它会把密码从gshadow文件内,回存到group文件里.
可以显示真实有效的用户ID(UID)和组ID(GID).UID是对一个用户的单一身份标识.组ID(GID)则对应多个UID.id命令已经默认预装在大多数Linux系统中.要使用它,只需要在你的控制台输入id.不带选项输入id会显示如下.结果会使用活跃用户.当我们想知道某个用户的UID和GID时id命令是非常有用的.一些程序可能需要UID/GID来运行.id使我们更加容易地找出用户的UID以GID而不必在/etc/group文件中搜寻.如往常一样,你可以在控制台输入man id进入id的手册页来获取更多的详情.-g或--group显示用户所属群组的ID.-G或--groups显示用户所属附加群组的ID.-n或--name 显示用户,所属群组或附加群组的名称.-r或--real 显示实际ID.-u或--user 显示用户ID.
用于查找并显示用户信息.本指令的功能有点类似finger指令,它会去查找并显示指定账号的用户相关信息.不同之处在于fwhois指令是到Network Solutions的WHOIS数据库去查找,该账号名称必须有在上面注册才能寻获,且名称没有大小写的差别.
用于登入另一个群组.newgrp指令类似login指令,当它是以相同的账号,另一个群组名称,再次登入系统.欲使用newgrp指令切换群组,您必须是该群组的用户,否则将无法登入指定的群组.单一用户要同时隶属于多个群组,需利用交替用户的设置.若不指定群组名称,则newgrp指令会登入该用户名称的预设群组.
给出登录界面,可用于重新登陆或者切换用户身份,也可通过它的功能随时更换登入身份.在Slackware发行版中,您可在命令后面附加欲登入的用户名称,它会直接询问密码,等待用户输入.当/etc/nologin文件存在时,系统只许root账号登入系统,其它用户一律不准登入.-p: 告诉login指令不销毁环境变量;-h: 指定远程服务器的主机名.Linux是一个真正的多用户操作系统,可以同时接受多个用户登陆,还允许一个用户进行多次登陆.这是因为Linux和许多版本的Unix一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统直接相连的监视器和
键盘)进行多次登陆.每个虚拟控制台可以看作是一个独立的工作站,工作台之间可以切换.虚拟控制台的却换可以通过按下Alt键和一个功能键来实现,通常使用F1-F6.例如,用户登陆后,按一下"Alt+F2"键,用户就可以看到上面出现的"login:"提示符,说明用户看到了第二个虚拟控制台.然后只需按"Alt+F1"键,就可以回到第一个虚拟控制台.一个新安装的Linux系统允许用户使用"Alt+F1"到"Alt+F6"键来访问前六个虚拟控制台.虚拟控制台最有用的是,当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作,关闭这个程序.
显示用户名称,对应/usr/bin/logname.当进行多个并行登录时,容易丢失对登录名或(特别是) 您当前正在使用的登录名的跟踪.可以使用whoami和logname命令显示此信息.
用于退出当前登录的Shell,logout指令让用户退出系统,其功能和login指令相互对应.
批处理的方式一次创建多个用户.实用newusers命令批量添加用户,newusers后面直接跟一个文件,文件格式和/etc/passwd的格式相同:用户名1:X:UID:GID:用户说明:用户的家目录:所用SHELL
用于查看系统用户.rwho指令效果类似who指令,但它会显示局域网里所有主机的用户.主机必须提供rwhod常驻服务的功能,方可使用rwho指令.rwho命令主要用于查看局域网中所有安装了rwho的机器的启动时间和登录用户,这个命令的原理就是由rwho和rwhod守护进程每三分钟广播一次状态信息,所以引发的一个安全问题就是, 只要这台机器装了rwho那么就可以知道局域网中所有的安装了rwho机器的用户登录信息.
可以实现礼貌地拒绝用户登录系统,同时给出信息.如果尝试以这类用户登录,就在log里面添加记录,然后在终端输出This account is currently not available信息,就是这样.一般设置这样的账号是给启动服务的账号所用的,这只是让服务启动起来,但是不能登录系统.禁止个别用户登录,比如禁止lynn用户登录: passwd -l lynn 禁止所有用户登录: touch /etc/nologin, 除了root以外的用户不能登录了.
设置用户的认证信息,包括用户密码,密码过期时间等.系统管理者则能用它管理系统用户的密码.只有管理者可以指定名称,一般用户只能变更自己的密码.如果是普通用户执行passwd只能修改自己的密码.如果新建用户后,要为新用户创建免密,则用passwd用户名,注意要以root用户的权限来创建.注意:当我们清除一个用户的密码时,登录时就无需密码,这一点要加以注意.-d: 删除密码,仅有系统管理者才能使用;-f: 强制执行;-k: 设置只有在密码过期失效后,方能更新;-l: 锁住密码;-s: 列出密码的相关信息,仅有系统管理者才能使用;-u: 解开已经上锁的账号.注意: 一般地,root的默认密码就是用户的免密.如果需要更改ROOT密码(以centos7为例), 可在开机时按e进入编辑模式,然后在"LANG=zh_cn.UTF-8"同行后面加上"init=/bin/sh", 再按CTRL+X即可进入单用户模式,输入passwd命令更改密码即可(一般要求8位以上).
验证系统认证文件/etc/passwd和/etc/shadow的内容和格式的完整性.-q: 仅报告错误信息;-s: 以用户id排序文件 "/etc/passwd" 和 "/etc/shadow";-r: 只读方式运行指令.
开启用户的投影密码.Linux系统里的用户和群组密码,分别存放在名称为passwd和group的文件中,这两个文件位于/etc/目录下.因系统运作所需,任何人都得以读取它们,造成安全上的破绽.投影密码将文件内的免密改存在/etc目录下的shadow和gshadow文件内,只允许系统管理者读取,同时把原密码置换为"x"字符,有效的强化了系统的安全性.
与pwconv功能相反,用来关闭用户的投影密码.它会把密码从shadow文件内,重回存到passwd文件里>
切换当前用户身份到其它用户身份,变更时须输入索要变更的用户账号与密码.-c<指令>或--command=<指令>: 执行完指定的指令后,即恢复原来的身份;-f或--fast: 适用于csh与tsch,使shell不用去读取启动文件;-l或----login: 改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname. 此外,也会变更PATH变量;-m,-p或--preserve-environment: 变更身份时,不要变更环境变量; -s或--shell=: 指定要执行的shell. 变更账号为root并在执行ls指令后退出变回原使用者: su -c ls root 变更账号为root并传入-f选项给新执行的shell: su root -f 变更账号为test并改变工作目录至test的家目录: su -test
Linux中创建的新的系统哟呼.useradd可用来建立用户账号.账号建好之后,再用passwd设定账号的密码,而可用userdel删除账号.使用useradd指令所建立的账号,实际上是保存在/etc/passwd文本文件中.在Slackware中,adduser指令是个script程序,利用交谈的方式取得输入的用户账号资料,然后再交由真正建立账号的useradd命令建立新用户,如此可方便管理员建立用户账号.在RedHatLinux中,adduser命令则是useradd命令的符号连接,两者实际上是同一个指令.建立一个新用户账户,并设置ID: useradd caojh -u 544 需要说明的是,设定ID值时尽量要大于500, 以免冲突.因为Linux安装后会建立一些特殊用户,一般0到499之间的值留给bn,mail这样的系统账号.建立一个新用户账户testuser1,并设置UID为544,主目录为/usr/testuser1,属于users组: useradd -u 544 -d /usr/testuser1 -g users -m testuser1 adduser tmp; passwd tmp; 两个命令一起创建一个用户tmp
用于新增使用者账号或更新预设的使用者资料.adduser 与 useradd 指令为同一指令 (经由符号连结symbolic link).
删除给定的用户,以及与用户相关的文件. 若不加选项,则仅删除用户账号,而不删除相关文件.-f: 强制删除用户, 即使用户当前已经登录;-r: 删除用户的同时,删除与用户相关的所有文件.userdel -r linuxde //删除用户linuxde,其下目录及文件一并删除
修改用户的基本信息.usermod命令不允许你改变正在线上的使用者账号名称.当usermod命令用来改变userid,必须确认这名user没在电脑上执行任何程序.你需手动更改使用者的crontab档.也需要手动更改使用者的at工作档.采用NISserver须在server上更动相关的NIS设定.将newuser2添加到组staff中: usermod -G staff newuser2修改newuser的用户名为newuser1: usermod -l newuser1 newuser 锁定账号newuser1: usermod -L newuser1解除对newuser1的锁定: usermod -U newuser1 删除用户: userdel -r 用户名
显示当前登录系统的所有用户的用户列表.每个显示的用户名对一你个一个登录会话.如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数.
用于用户账号设置程序.DEBIAN中未找到此命令.userconf实际上为linuxconf的符号连接,提供图形界面的操作方式,供管理员建立与管理各类账号.若不加任何参数,即进入图形界面.
显示目前登录系统的用户信息.执行who命令可得知目前有那些用户登入系统,单独执行who命令会列出登入账号,使用的终端机,登入时间以及从何处登入或正在使用哪个X
显示器.-H或--heading:显示各栏位的标题信息列;-i或-u或--idle: 显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已经超过24小时没有任何动作,则标示出"old"字符串;-m: 此参数的效果和指定"am i"字符串相同;-q 或--count: 只显示登入系统的账号名称和总人数;-s: 此参数将忽视不予处理,仅负责解决who指令其它版本的兼容性问题;-w或-T或-mesg或--message或--writable: 显示用户的信息状态栏.
显示当前有效的用户名称, 相当于执行id -un命令 (两个命令执行结果一摸一样).
在Linux系统中显示已知的用户信息(linux版本).
在Linux系统中显示已知的用户信息 (BSD版本).
系统审计
设置指令的别名 (类似于
自定义命令).我们可以使用该命令可以将一些长的命令进行简化.使用alias时,用户必须使用单引号"将原来的命令引起来,防止特殊字符导致错误.alias命令的作用只局限于该次登入的操作.若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化文件/etc/bashrc中.-p: 显示已经设置的命令别名.命令别名设置: 定义命令别名,格式为"命令别名='实际命令'".例如: alias l='ls -lsh'将重新定义ls命令,现在只需输入l就可以列目录了. 直接输入alias 命令会列出当前系统中所有已经定义的命令别名. 要删除一个别名,可以使用unalias命令,如unalias l. alias 'vi=vim' alias用于命令合成: alias ll='ls -al'或者alias ll='ls --color=auto -l -time-style="+%Y/%m/%d %H:%M:%S"' (按中文日期显示ls -l命令的结果) alias nano="nano -w": 可以让nano编辑器避免自动将过长内容拆分成多行(造成某些文件出现问题)
取消命令别名,是为shell内建命令.如果需要取消任意一个命令别名,则使用该命令别名作为指令的参数选项即可.如果使用-a选项,则表示取消所有已经存在的命令别名.unalias cc #取消已经设置的命令别名cc
在一些特定的包含系统命令的简短描述的数据库文件里查找关键字,然后把结果送到标准输出.返回0表示成功, 1表示用法,语法或配置文件错误,2表示操作错误,16表示没有找到匹配的内容.如果你不知道完成某个特定任务所需要命令的名称,可以使用一个关键字通过Linuxapropos实用程序来搜索它.该实用程序可以搜索关键字并且显示所有包含匹配项的man页面的简短描述.另外,使用man实用程序和-k(关键字)选项,可以得到和用Linuxapropos实用程序相同的结果(实际上是相同的命令).查找手册页名字和描述中包含emacs和vi的手册页: apropos -a emacs vi
将作业放到后台运行,使前台可以执行其它任务.该命令的运行效果与在指令后面添加符号&的效果是相同的,都是讲其放到系统后台执行.在Linux系统中执行某些操作时候,有时需要将当前任务暂停调至后台,或有时须将后台暂停的任务重启开启并调至前台,这一序列的操作将会使用到jobs,bg,和fs三个命令以及两个快捷键来完成.使用bg命令将任务号为1的任务放到后台继续执行,输入如下命令:bg1 #后台执行任务号为1的任务 如果系统中只有一个挂起的任务时,即使不为该命令设置参数"1",页可以实现这个功能.注意: 实际上,使用bg命令与在指令后面添加符号"&"的效果是一样的.例如,使用&将find / -name password放到后台执行,输入如下命令: find / -name password & #后台执行任务. 可用fg将后台命令调到前台执行.
用于将后台作业 (在后台运行的或者在后台挂起的作业) 放到前台终端运行.与bg命令一样, 若后台任务中只有一个,则使用该命令时,可以省略任务号.在 Linux系统中执行某些操作时候,有时需要将当前任务暂停调至后台,或有时须将后台暂停的任务重启开启并调至前台,这一序列的操作将会使用到jobs,bg,和fs三个命令已经两个快捷键来完成.使用fg命令将任务号为1的任务从后台执行转换到前台执行,输入如下命令: fg1;执行上面的命令后,命令行窗口将显示如下信息: find / -name password. 可用bg将前台命令调到后台执行.
显示和设置命令行的键盘序列绑定功能.通过这一命令,可以提高命令行中操作效率.您可以利用bind命令了解有哪些按键组合与其功能,也可以自行指定要用哪些按键组合.-d: 显示按键配置的内容;-f<按键配置文件>: 载入指定的按键配置文件;-l: 列出所有的功能;-m<按键配置>: 指定按键配置;-q<功能>: 显示指定功能的按键;-v: 列出目前的按键配置与其功能.bind -x "\C-l":ls -l' #直接按CTRL+L就列出目录 其中keyseq可以使用showkey -a命令来获取(showkey -a用于显示按下键的ASCII码 (以10进制,8进制,16进制值显示)).
用于把按下的键的扫描码,键盘码和ASCII码打印到标准输出.在调试键盘驱动时, 你可能需要确认底层是否通了,是否获取到相应的键值?此时可以使用linux的showkey命令来帮忙.注意: 使用showkey必须切换到真正的控制台下,然后必须退出图形界面,此时可以按CTRL+ALT+Fn (n为1-6)切换至控制台,而按CTRL+ALT+F7可切换回图形界面. 打印按下键的扫描码: showkey -s 打印按下键的键盘码: showkey -k
执行指定的shell内部命令, 并返回内部命令的返回值.builtin命令在使用时, 将不能够再使用Linux中的外部命令.档系统中定义了与shell内部命令相同的函数时,使用builtin显示地执行shell内部命令,从而忽视定义的shell函数.
调用指定的指令并执行, 命令执行时不查询shell函数.command命令只能够执行shell内部的命令.使用command命令调用执行echo Linux,输入如下命令: command echo Linux, 上面的命令执行后, 将调用执行命令echo Linux,其执行结果如下: Linux.
声明和显示已经存在的shell变量.当不提供变量名参数时显示所有shell变量.declare命令若不带任何参数选项,则会显示所有shell变量及其值.declare的功能与typeset命令的功能是相同的.+/-: "-"可用来指定变量的属性,"+"则是取消变量所设的属性;-f: 仅显示函数;r: 将变量设置为只读;x: 指定的变量会成为环境变量,可供Shell以外的程序来使用;i: [设置值] 可以是数值, 字符串或运算式.首先使用declare命令定义shell变量"test",并且将其值设置为"man.linuxde.net", 输入如下命令: declare test='man.linuxde.net',上面的命令执行后, 再使用echo命令将该shell变量值输出,输入如下命令: echo $test,上面的指令执行后,其输出的结果如下: man.linuxde.net
显示和清空目录堆栈中的内容.+n: 显示从左边算起第n笔的目录;-n: 显示从右边算起第n笔的目录;-l: 显示目录完整的记录.
在shell中打印shell变量的值, 或者直接输出指定的字符串.linux的echo命令, 在shell编程中极为常用,在终端下打印变量value的时候也是最常用到的,因此有必要了解下echo的用法echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用.可以用echo命令打印带有色彩的文字 (设置文字色, 背景色, 但二者的颜色码不同), 实现文字闪动, 高亮度(加粗),下划线,反显,清隐效果.文字色颜色码: 重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37; 背景色颜色码: 重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47. echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"echo -e "\033[37;31;7mMySQL Server Stop...\033[39;49;0m"echo -e "\e[1;42mGreen Background\e[0m"echo -e "\e[1;31mThis is red text\e[0m"查看linux下当前使用语言命令: echo $LANG如果想把一个字符串中的一些字符删除 (替换为空), 可以如此: echo "2006-11-21 22:16:30" | sed 's/-//g' | sed 's/ //g' |sed 's/://g' ,得到的结果就是: 20061121221630.
临时关闭或者激活指定的shell内部命令.若要执行的文件名称与shell内建命令相同,可用enable -n来关闭shell内建命令.若不加-n选项, enable可重新启动关闭的命令.linuxshell命令执行时, shell总是先在自己的shellbuiltin中查找该命令,如果找到则执行该命令;如果找不到该命令,则会从环境变量$PATH指定的路径中依次去查找待执行的命令.因为了解了这一点,所以看起来好像没有办法编写用户自己的命令来替代shellbuiltin命令.幸运的是,有了enable命令我们就能做到了.-n: 关闭指定的内部命令;-a: 显示所有激活的内部命令;-f: 从指定文件中读取内部命令.
查看系统中的环境变量,以及在定义的环境中执行指令.默认直接显示当前的环境变量.如果使用env命令在新环境中执行指令时,会因为没有定义环境变量"PAT"而提示错误信息"no such file or directory".此时,用户可以重新定义一个新的"PATH"或者使用绝对路径.-i: 开始一个新的空的环境;-u<变量名>: 从当前环境中删除指定的变量.利用环境变量解决终端显示乱码问题 (临时解决, 重启后失效): 在终端中执行如下命令: LANG=en,LANGUAGE=en,LC_ALL=en,LC_CTYPE=en,LC_TIME=en
调用并执行指令的命令.exec命令通常用在shell脚本程序中,可以调用其它的命令.如果在当前终端中使用命令,则当指定的命令执行完毕后会立即退出终端.首先使用echo命令将文本"Linux C++" 进行输出,输入如下命令: echo Linux C++, 执行上面的指令后,输出如下信息: Linux C++, 然后再使用exec命令调用echo命令输出同样的信息,并且对输出的信息进行对比,输入指令如下所示: exec -c echo Linux C++执行以上命令后,其输出信息如下: Linux C++,通过比较两者执行后的结果来看,所实现的功能是相同的,即使用exec命令调用echo命令成功.
退出shell,并返回给定值.在shell脚本中可以终止当前脚本执行.执行exit可使shell以指定的状态值退出.若不设置状态值参数,则shell以预设值退出.状态值0代表执行成功,其它值代表执行失败.在脚本中,进入脚本所在目录,否则退出: cd $(dirname $0) || exit 1在脚本中,退出时删除临时文件: trap "rm -f tmpfile; echo Bye." EXIT
将shell变量输出为环境变量, 或者将shell函数输出为环境变量.\一个变量创建时, 它不会自动地为在它之后创建的shell进程所知.而命令export可以向后面的shell传递变量的值.当一个shell脚本调用并执行时, 它不会自动得到原为脚本 (调用者) 里定义的变量的访问权, 除非这些变量已经被显示地设置为可用.export 命令可以用于传递一个或多个变量的值到任何后继脚本.-f: 代表[变量名称]中为函数名称;-n: 删除指定的变量.变量实际上并未删除, 只是不会输出到后继指令的执行环境中;-p: 列出所有的shell赋予程序的环境变量.一般来说, 配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量.
多重引导程序grub的命令行shell工具.--batch: 打开批处理模式;--boot-drive=<驱动器>: 指定stage2的引导驱动器;--config-file<配置文件>: 指定stage2的配置文件;--device-map=<文件>: 指定设备的映射文件;--help: 显示帮助信息;--install-partition=<分区>: 指定stage2安装分区;--no-config-file: 不使用配置文件;--no-pager: 不使用内部分页器;--preset-menu: 使用预设菜单;--probe-second-floppy: 检测第二个软盘驱动器;--read-only: 只读模式.
自动调用vi编辑器修改已有历史命令, 当保存时立即执行修改后的命令, 也可以用来显示历史命令.fc保存文件后, 会自动执行所编辑过的命令.-l: 显示历史命令;-n: 显示历史命令时, 不显示编号;-r: 反序显示历史命令.使用该指令显示最近使用的10条历史命令, 输入如下命令: fc -l -10 第一列信息是历史命令的编号,第二列信息是历史命令的具体格式. 若用户需要编辑第1040条历史命令时, 则输入如下命令: fc 1040;命令执行成功后, 将自动调用vi编辑器编辑指定的命令,编辑完成后保存,会自动执行修改后的命令.当用户在vi编辑器中修改指令并保存后, 被修改的命令会被自动调用并执行.
用于显示shell内部命令的帮助信息.help命令只能显示shell内部的命令帮助信息.而对于外部命令的帮助信息只能使用man或者info命令查看.-s: 输出短格式的帮助信息.仅包括命令格式.help shopt #获取shopt命令的帮助信息
命令回溯功能,与.bash_history文件相关.用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件.该命令单独使用时, 仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令.例如,要执行第2个历史命令,则输入!2.历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取.在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量HISTSIZE进行控制.-c: 清空当前历史命令;-a: 将历史命令缓冲区中命令写入历史命令文件中;-r: 将历史命令文件中的命令读入当前历史命令缓冲区;-w: 将当前历史命令缓冲区命令写入历史命令文件中.history 10 查看最近执行的10条命令.希望执行之前历史记录中的命令, 但又不想重新输入,该怎么办?使用符号!即可, 可以使用符号!执行指定序号的历史命令.例如, 要执行第2个历史命令,则输入!2.
制作一份记录输出到终端的记录 (make typescript of terminal session, 文本文件), 该记录可以保存并在以后再打印出来.记录在终端的一切.语法: script[选项][文件] script my.terminal.sessio 输入命令: ls; date; sudo service foo stop, 要退出 (结束script会话), 输入exit或者logout或者按下control-D. 要浏览输入: more my.terminal.session, less my.terminal.session或者 cat my.terminal.session.
显示Linux中的任务列表及任务状态, 包括后台运行的任务.该命令可以显示任务号及其对应的进程号.其中,任务号是以普通用户的角度进行的, 而进程号则是从系统管理员的角度来看的.一个任务可以对应于一个或者多个进程号.在Linux系统中执行某些操作时候, 有时需要将当前任务暂停调至后台, 或有时须将后台暂停的任务重启开启并调至前台, 这一序列的操作将会使用到jobs,bg,和fg三个命令以及两个快捷键来完成.-l: 显示进程号;-p: 仅任务对应的显示进程号;-n: 显示任务状态的变化;-r: 仅输出运行状态(running)的任务;-s: 仅输出停止状态(stopped)的任务.使用jobs命令显示当前系统的任务列表, 输入如下命令: jobs -l; 上面的命令执行后, 将显示出当前系统下的任务列表信息, 具体如下所示: [1] +1903运行中 find / -name password & 注意: 要得到以上输出信息,必须在执行jobs命令之前执行 find / -name password & 否则,执行jobs命令不会显示任何信息.其中,输出信息的第一列表示任务编号, 第二列表示任务所对应的进程号, 第三列表示任务的运行状态,第四列表示启动任务的命令.利用jobs查看到后台的任务和编号后,再用fg number命令将任务调到前台来执行.
bash中用于计算的工具, 提供常用运算符还提供了方幂**运算符.在变量的计算中不需要加上$来表示变量,如果表达式的值是非0,那么返回的状态值是0;否则,返回的状态值是1.自加操作let no++;自减操作let no--;简写形式let no+=10,let no-=20,分别等同于let no=no+10, let no=no-20
从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合.该命令可以依次读取多个变量的值,变量和输入的值都需要使用空格隔开.-p: 指定读取值时的提示符;-t: 指定读取值时等待的时间(秒).使用read命令从键盘读取变量值, 并且将值赋给指定的变量: read v1 v3; 执行上面的指令以后, 要求键入两个数据: Linux C+;完成之后,可以使用echo命令将指定的变量值输出查看: echo $v1 $v3;执行输出变量值的命令以后, 将显示用户所输入的数据值: Linux c+.注意: 使用echo命令输出变量值时, 必须在变量名前面添加符号$.否则,echo将直接输出变量名.
定义只读shell变量和shell函数.readonly命令的选项-p可以输出显示系统中所有定义的只读变量.当用户试图修改只读变量的值时, 会被提示该变量为只读变量.-f: 定义只读函数;-a: 定义只读数组变量;-p: 显示系统中全部只读变量列表.
产生从某个数到另外一个数之间的所有整数.-w选项指定输出数字同宽: seq -w 98 101
显示系统中已经存在的shell变量, 以及设置shell变量的新变量值.使用set 更改shell特性时, 符号"+"和"-"的作用分别是打开和关闭指定的模式.set命令不能够定义新的shell变量.如果要定义新的变量,可以使用declare命令以变量名=值的格式进行定义即可.使用declare命令定义一个新的环境变量"mylove",并且将其值设置为"Visual C++": declare mylove='Visual C++';再使用set命令将新定义的变量输出为环境变量: set -a mylove;执行该命令后, 将会新添加对应的环境变量.用户可以使用env命令和grep命令分别显示和搜索环境变量"mylove": env | grep mylove; 此时,该命令执行后,将输出查询到的环境变量值.
删除已经定义的shell变量 (包括环境变量) 和shell函数.unset命令不能够删除具有只读属性的shell变量和环境变量.-f: 仅删除函数;-v: 仅删除变量.使用unset命令将前面所创建的环境变量mylove及其对应的值进行删除,输入如下命令: unset -v mylove;执行以上命令后,系统将删除指定的环境变量.用户可以使用env命令和grep命令对其进行查询.已经删除的环境变量再次使用指令查询时,将出现查询不到指定环境变量的输出信息.
显示和设置shell中的行为选项, 通过这些选项以增强shell易用性.shopt命令若不带任何参数选项, 则可以显示所有可以设置的shell操作选项.-s: 激活指定的shell行为选项;-u: 关闭指定的shell行为选项.shopt -s cdspell #开启cd拼写检查
将通过terminfo数据库对您的终端会话进行初始化和操作.通过使用tput, 您可以更改几项终端功能, 如移动或更改光标,更改文本属性,以及清除终端屏幕的特定区域.UNIX系统上的terminfo,数据库用于定义终端和打印机的属性及功能,包括各设备 (例如, 终端和打印机) 的行数和列数以及要发送至设备的文本的属性.UNIX中的几个常用程序都依赖terminfo数据库提供这些属性以及许多其它内容, 其中包括vi和emacs编辑器以及curses和man程序.与UNIX中的大多数命令一样,tput命令既可以用在shell命令中也可以用在shell脚本中.为让您更好地理解tput,本文首先从命令行讲起,然后紧接着讲述shell脚本示例.
指定在接收到信号后将要采取的动作, 常见的用途是在脚本程序被中断时完成清理工作. 当shell接收到sigspec指定的信号时, arg参数(命令)将会被读取,并被执行.例如: trap "exit 1" HUP INT PIPE QUIT TERM表示当shell收到HUP INT PIPE QUIT TERM这几个命令时, 当前执行的程序会读取参数 "exit 1",并将它作为命令执行. 当你改变了默认在收到信号后应采取的动作,你可以改变它回来的陷阱,如果你只是省略第一个参数; $trap 1 2 复位应采取的动作收到信息1或2返回默认.
显示指定命令的类型, 判断给出的指令是内部指令还是外部指令.命令类型: alias : 别名; keyword: 关键字,Shell保留字; function: 函数,Shell函数; builtin: 内建命令,Shell内建命令; file: 文件,磁盘文件,外部命令; unfound: 没有找到. -t: 输出"file", "alias" 或者"builtin",分别表示给定的指令为"外部指令","命令别名" 或者 "内部指令"; -p: 如果给出的指令为外部指令, 则显示其绝对路径; -a: 在环境变量"PATH"指定的路径中,显示给定指令的信息,包括命令别名. type date,返回: date是/bin/datetype -a grep, 返回: grep是/bin/greptype if,返回: if是shell关键字
限制系统用户对shell资源的访问.如果不懂什么意思,下面一段内容可以帮助你理解: 假设有这样一种情况, 当一台Linux主机上同时登陆了10个人, 在系统资源无限制的情况下, 这10个用户同时打开了500个文档, 而假设每个文档的大小有10M,这时系统的内存资源就会受到巨大的挑战. 而实际应用的环境要比这种假设复杂的多,例如在一个嵌入式开发环境中,各方面的资源都是非常紧缺的,对于开启文件描述符的数量,分配堆栈的大小,CPU时间,虚拟内存大小等等都有非常严格的要求. 资源的合理限制和分配,不仅仅是保证系统可用性的必要条件,也与系统上软件运行的性能有着密不可分的联系. 这时,ulimit可以起到很大的作用,它是一种简单并且有效的实现资源限制的方式. -a: 显示目前资源限制的设定;-c: 设定core文件的最大值, 单位为区块;-d<数据节区大小>: 程序数据节区的最大值, 单位为KB;-f<文件大小>: shell所能建立的最大文件, 单位为区块;-H: 设定资源的硬性限制, 也就是管理员所设下的限制;-m<内存大小>: 指定可使用内存的上限,单位为KB;-n<文件数目>: 指定同一时间最多可开启的文件数;-p<缓冲区大小>: 指定管道缓冲区的大小,单位512字节;-s<堆叠大小>: 指定堆叠的上限,单位为KB;-S: 设定资源的弹性限制;-t: 指定CPU使用时间的上限,单位为秒;-u<程序数目>: 用户最多可开启的程序数目;-v<虚拟内存大小>: 指定可使用的虚拟内存上限,单位为KB.
等待指令指令, 直到其执行完毕后返回终端.该芝琳常用于shell脚本编程中,待指定的指令执行完成后,才会继续执行后面的任务.该指令等待作业时, 在作业标识号前必须添加备份号"%".使用命令wait等待作业号为1的作业完成后再返回,输入如下命令: wait %1;执行上面的指令后,将输出指定作业号的指令,如下所示: find / -name password.
查找磁盘中损坏的区块.硬盘是一个损耗设备, 当使用一段时间后可能会出现坏道等物理故障.电脑硬盘出现坏道后, 如果不及时更换或进行技术处理, 坏道就会越来越多,并会造成频繁死机和数据丢失.最好的处理方式是更换磁盘,但在临时的情况下,应及时屏蔽坏道部分的扇区, 不要触动它们.badblocks就是一个很好的检查环境位置的工具.-b<区块大小>: 指定磁盘的区块大小,单位为字节;-o<输出文件>: 将检查的结果写入指定的输出文件;-s: 在检查时显示进度;-v: 执行时显示详细的信息;-w: 在检查时,执行