linux命令详解之at

linux命令详解之at,第1张

Linux下,有两个命令可以用来作为计划任务而执行,

要使用一次性任务计划,linux必须要有负责这个计划任务的服务,那就是atd服务

但是并非所有的linux distribution都默认会打开,我们需要手动激活爱听的任务

如果服务未安装,则需要手动安装

#:yum install - y at 或 #:apt-get install at

如果担心启动是否执行OK的话,可使用命令查看:

#:ps aux |grep atd

或者使用

systemctl status atd

# 查阅一下 atd 目前的状态,Active 状态应是 running

使用 at 这个指令来产生所要运行的工作,并 将这个工作以文本文件的方式写入 /var/spool/cron/atjobs/ 目录内,该工作便能等待 atd 这个服务的取用与执行了。 不过,因为安全的理由,并不是所有的人都可以进行 at 工作调度!

at 的使用限制是利用 /etc/atallow 与 /etc/atdeny 这两个文件来进行的! 加上这两个文件后,at 的工作情况其实是这样的:

在一般的 distributions 当中,由于假设系统上的所有用户都是可信任的,因此系统通常会保留一个空的 /etc/atdeny 文件,意思是允 许所有人使用 at 指令的意思 (您可以自行检查一下该文件)。 不过,万一你不希望有某些 使用者使用 at 的话,将那个使用者的帐号写入 /etc/atdeny 即可! 一个帐号写一行。

单一工作调度的进行就使用 at 这个指令!这个指令的运行非常简单!将 at 加上一个时间即可!基本的语法如下:

事实上,当我们使用 at 时会进入一个 at shell 的环境来让使用者下达工作指令,此时,建议 你最好使用绝对路径来下达你的指令,比较不会有问题!由于指令的下达与 PATH 变量有关, 同时与当时的工作目录也有关连 (如果有牵涉到文件的话),因此使用绝对路径来下达 指令,会是比较一劳永逸的方法。 举例来说,你在 /tmp 下达 at now 然后输入 mail -s "test" root < bashrc , 问一下,那个 bashrc 的文件会是在哪里?答案是 /tmp/bashrc !因为 at 在运行时,会跑到当时下达 at 指令的那个工作目录运行!

要注意的是,如果在 at shell 内的指令并没有任何的讯息输出,那么 at 默认不会发 email 给执行者的。 如果你想要让 at 无论如何都发一封 email 告知你是否执行了指令,那么 可以使用“ at -m 时间格式 ”来下达指令! at 就会传送一个讯息给执行者,而不论该指令执行有无讯息输出了!

如果要在某某时刻,在我的终端机显示出 Hello 的字样,可以通过终端机的设备来处理!假如你在 tty1 登陆(在命令行里面输入 tty 可以查看),则可以使用 echo "Hello" > /dev/tty1 。

at 有另外一个很棒的优点, 由于 at 工作调度的使用上,系统会将该项 at 工作独立出你的 bash 环境中, 直接交给系统的 atd 程序来接管,因此,当你下达了 at 的工作之后就可以立刻离线了, 剩下的工作就完全交 给 Linux 管理即可!所以如果有长时间的网络工作时,使用 at 可以让你免除网络断线后的困扰。

其实 batch 是利用 at 来进行指令的下达!只是加入一些控制参数而已。这个 batch 神奇的地方在于:他会在 CPU 的工作负载小于 08 的时候,才进行你所下达的工作任务啦!

那什么是工作负载 08 呢?这个工作负载的意思是: CPU 在单一时间点所负责的工作数量。不是CPU 的使用率喔! 举例来说,如果我有一只程序他需要一直使用 CPU 的运算功能,那么此 时 CPU 的使用率可能到达 100% , 但是 CPU 的工作负载则是趋近于“ 1 ”,因为 CPU 仅负责一个工作!如果同时执行这样的程序两支呢? CPU 的使用率还是 100% ,但是工作负载 则变成 2 了! 所以也就是说,当 CPU 的工作负载越大,代表 CPU 必须要在不同的工作之间进行频繁的工 作切换。 因为一直切换 工作,所以会导致系统忙碌啊! 系统如果很忙碌,还要额外进行 at ,不太合理!所以才有 batch 指令的产生!

下面来实验一下 batch 好了!为了产生 CPU 较高的工作负载,我们用了 计算 pi 的脚本,连续执行 4 次这只程序, 来仿真高负载,然后看看batch 的工作现象。

使用 uptime 可以观察到 1, 5, 15 分钟的“平均工作负载”量,因为是平均值,所以当我们如上 表删除掉四个工作后,工作负载不会立即降低, 需要一小段时间让这个 1 分钟平均值慢慢回 复到接近 0 啊!当小于 08 之后的“整分钟时间”时,atd 就会将 batch 的工作执行掉了!

什么是“整分钟时间”呢?不论是 at 还是 crontab,他们最小的时间单位是“分 钟”,所以,基本上,他们的工作是“每分钟检查一次”来处理的! 就是整分 (秒为 0 的时候),同时,你会发现其实 batch 也是使用 atq/atrm 来管理的!

1 当前控制终端(/dev/tty)

/dev/tty指的是当前所处的终端,输出到此的内容只会显示在当前工作的终端显示器上;可以使用命令”ps –ax”来查看进程与哪个控制终端相连对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0)

使用命令”tty”可以查看自己具体对应哪个实际终端设备/dev/tty有些类似于到实际所使用终端设备的一个联接

2/dev/pts

/dev/pts是远程登陆(telnet,ssh等)后创建的控制台设备文件所在的目录。由于可能有好几千个用户登陆,所以/dev/pts其实是动态生成的,不象其他设备文件是构建系统时就已经产生的硬盘节点

3控制台终端-系统控制台(/dev/console 和 /dev/tty)

在Linux系统中,计算机显示器通常被称为控制台终端(Console)它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2等当你在控制台上登录时,使用的是tty1使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去tty1–tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上

你可以登录到不同的虚拟终端上去,因而可以让系统同时有几个不同的会话期存在只有系统或超级用户root可以向/dev/tty0进行写 *** 作

希望对你有所帮助!

早期计算机精贵,一台主机,连很多终端,终端为主机提供了人机接口,很多人都通过终端使用主机的资源。当时的终端按字面意思可以分为字符哑终端和图形终端两种。

而控制台是另一种人机接口。 不通过串行线路与主机相连,直接安在主机上,,这是人控制主机的第一人机接口。

可以想象成主机上有块面板,面板上方小灯闪,人得站着才能够着它(控制台),主机上面一些电缆延伸到很多人办公桌的屏幕和键盘上(终端)。

terminal和tty已经成为同义词

历史上只有这些串口设备才被叫做终端,也即现在的串行端口终端;

计算机把每个串行设备看作一个字符设备;

如你所知,Linux把设备当作文件;

对应的设备文件名是,ttyS;

通过X Windows(图形界面)、SSH、telnet等登入主机所用的终端;

成对的逻辑终端设备,包含主端和从端;

有两套伪终端接口:

对master的 *** 作会反应到slave上

控制终端是指能够控制一个、一套设备或者几套设备的终端控制器;

/dev/tty是一个应用程序概念,面对进程;

/dev/tty会映射到当前使用的终端,使用命令tty查看其当前指向的“设备”

tty(控制终端)会映射到你正在使用的任何类型的终端上,用tty命令查看

详见“现代控制台”

早期的计算机终端是通过串行RS-232通信的,它只能解释有限数量的控制码(CR,LF

等),但没有能力处理执行特殊的转义序列功能(如清行、清屏或控制光标的位置)。

总之就是很有限,很基本的终端;

X Windows下按ctrl + alt + Fn(n为特定数字时是X Windows),其他时候按alt + Fn;

你得到的虚拟控制台终端,就是模仿的字符哑终端。

智能终端就是有能力处理转义序列,也就是说处理能力较强的终端机。

本质上现代的终端都虚拟化了,但虚拟终端可特指伪终端,或者说模拟终端

与控制台终端同义

注意不要混淆虚拟终端与虚拟控制台

虚拟终端广义上包含虚拟控制台

Shell,壳,与Linux的核kernel对应。顾名思义就是机器的核心外面的一层壳,用于人机交互,只要是人与电脑之间交互的接口,就可以称为 Shell;

Shell=解释器,那解释什么呢?

GUI和CLI都是shell,shell既不属于系统内核,也与一般应用程序不同,它属于系统工具,可以算作 *** 作系统的一部分,主要用来管理文件和运行程序,并提供与用户的交互。

用户 > (<) Shell > (<) *** 作系统内核

也即你向终端输入命令(或GUI下点击鼠标),终端自己是不会解释这些命令的,它只负责输入输出,而计算机是大爷,它只认二进制,不认你的命令。真正把这些命令解释成计算机明白的语言的是shell;

shell把一些信息适当的输送到终端设备,也接收来自终端设备的输入;

在Ubuntu 1804LST上进行

“在Ubuntu 1804中,他们已经改变了一些东西,你无法访问tty1,它总是显示登录屏幕。如果您已登录,则无法访问tty2,因为它将成为第一个登录用户的GUI。在tty7上显示的两个GUI的传统已经结束。”

>

从入行至今,使用Terminal的次数并不多,现用现查是常态,平时开发中 Git 也是使用图形界面工具,所以对Terminal非常陌生,直到最近自己搭了一个***才真正意识到命令行的便捷,而搭建博客的过程中命令行更是不可缺少的工具。

Mac上很多功能不提供图形界面,只能通过命令行来实现,例如说 ssh ,Windows下需要使用 XShell 之类的软件来 *** 作,而nix系统直接使用终端命令就可以直接链接:

通过Terminal可以访问所有目录,包括 Finder 隐藏的目录,而 Finder 的隐藏文件功能也只能通过 Terminal 开关,当然在系统 1012 中可以使用 Shift + Command + 来快速开启与关闭:

Terminal可以做界面图形App能做的绝大多数 *** 作,因为界面图形App背后使用的就是Command Line,例如在你安装 Xcode 之后,你就可以通过命令行进行编译和打包 *** 作:

虽然学习Command Line需要一个记忆和熟练的过程,但其强大且广泛的功能带给我们的便利快捷要远大于其学习成本,所以说使用Terminal,学会Command Line是一个程序员必备的素质之一。

Terminal里面成百上千条命令,每一条命令还有其具体的参数方法,谁也不能全都记住,那么怎么办?推荐学习Command Line的人们最先掌握的命令 man 。通过 man CommandName 来获取你想知道的命令的使用指南:

包括命令的名称、参数意义、使用描述等等,足够你理解使用这个命令了,在浏览期间可以通过 Space 翻页、 ↑ 和 ↓ 来滚动、输入 / SearchKeyword 来搜索,使用 Q 退出页面。如果你不清楚这个命令的名字,可以使用 man -K Keyword 来搜索,Terminal会询问你搜索的结果是否是你想要的。

虽然平时使用Finder管理文件已经很方便了,但是某些时候使用Terminal来进行路径和文件的 *** 作也会非常便捷。

路径分为绝对路径和相对路径。

绝对路径总是以 / 开头,例如 /Users/xuhaoran/blog 。

相对路径是根据你的Terminal当前的路径位置有关,Terminal默认路径为 Home Folder ,就是 ⌘ + ⇧ + H 的Folder,相对路径可以使用 / 来表示上一级路径,使用 / 表示本级路径,通常可以省略,使用 ~/ 则表示你的 Home Folder 。

绝对路径的第一个 / 代表根目录,而 /Users/UserName 即是 HomeFolder 。

如何获取绝对路径?有两个方法:1、打开Terminal后,直接拖拽Folder或File进来;2、使用 pwd 命令:

跳转到指定路径使用 cd 命令:

cd - 命令可以后退目录:

查看当前路径下的所有Folder和File使用 ls 命令,值得一提的是使用 Tab 可以进行匹配输入,注意Terminal大小写敏感。通常情况 ls 命令是不显示隐藏文件的,可以使用 ls -A 来显示所有隐藏文件,即 Name 形式的文件:

pwd 、 cd 、 ls 三条命令搭配使用可以完成绝大多数的路径查询跳转工作,至于这三个命令的其他参数可以使用 man 来自行查询。

而创建与删除路径使用 mkdir 与 rmdir 两个命令:

使用 mkdir 命令时,如果想创建多层目录的话可以添加参数 p :

通过Command Line检视文件,可以使用命令 cat 将文件内容输出到Terminal中:

面对较长的文本直接输出到Terminal中显然并不合理,那么可以使用 less 命令,在 less 命令进入文件后按 V 进入vim编辑器。

如果想查看文件类型信息,特别是在文件扩展名丢失的情况下,可以使用 file 命令:

可以使用 touch 命令创建文件和指定文件扩展名:

创建之后可以直接进入编辑器进行编辑,可以使用 vim 命令进去vim编辑器或者 nano 命令进入nano编辑器:

可以使用 open 命令打开一个文件或者使用Finder打开一个Folder,使用 open 命令来打开当前的Folder:

对于基本的复制剪切 *** 作可以分别使用 cp 、 mv 命令:

查看当前目录下的文件权限可以使用 ls -alh 命令:

其中权限部分详细的分为 d rwx rwx rwx 四部分。

第一部分中 d 表示为Directory,而 - 则表示File。

后面三部分分别表示“对所有者”、“对同组人”、“对其他人”的权限, r 读取权限、 w 写入权限、 x 执行权限, - 表示无权限。

以其中 AlamofireDemo 为例,表示为目录、所有者可读可写可执行、同组人可读可执行、其他人可读可执行。

而三部分的权限可使用数字表示,其中 r 权限为2², w 权限为2¹, x 权限为2º,例如: AlamofireDemo 目录的全校可以表示为 755 ,而 cerSigningRequest 文件的权限为 644 。

权限是可以变更的,使用 chmod 命令:

这是通常情况下的标准命令,为文件添加 rwxr-xr-x 权限, -R 参数表示改变目录结构下所有子目录文件的权限而并非目录本身。 chmod 777 FileName 则是非常危险的命令,赋予了其他人与root相同的权限。

chmod 还有一种改变权限的形式,使用运算符 + (增加)、 - (去除)、 = (覆盖设定)配合用户类型 u (所有者)、 g (同组人)、 o (其他人)、 a (全部):

上面这条命令是为 AlamofireDemo 这个目录的同组人添加执行权限。

同样,拥有者和群组也是可以改变的,使用 chown 命令:

sudo 命令的作用在于会用root账户权限来执行后面的命令,通常在执行一条命令提示 Permission denied 时使用。使用 sudo !! 再次执行:

如果执行多条需要root权限的命令,可以使用 sudo -s 获取root权限,注意 # 代替了 $ 表示使用root权限 *** 作, *** 作结束可以使用 Control + D 或者输入 exit 命令来退出环境:

在网络通信之前,最常用的 *** 作就是 ping 命令,它会给网络主机发送一个回应请求,进而验证可否进行通信:

可使用 Control + C 停止发送请求。

ssh 是一种远程登录和其他安全服务的协议,远程登录相比较于 telnet 和 rlogin 两种协议,有其特有的优势,例如加密传输、数据压缩等。

Mac的Terminal自带SSH,使用 ssh 就可以登录远程服务器:

之后就可以在远程服务器进行一些常规 *** 作或者一些逗逼的命令:

网络通信命令还有很多,这里限于能力就不献丑了。

bash 命令是用来执行一段脚本命令的命令,通常可以用来执行本地写好的脚本,例如:

who 命令可以列出当前登录的所有用户, who am i 显而易见是回答“我是谁?”的问题:

console 是电脑的底层控制台,伴随着电脑开机而启动; ttys (Teletypewriter的缩写)则是Terminal的类型名称,随着Terminal数量增加而增加计数。使用 Command + N 来新建Terminal。

至于 Console 、 Terminal 、 tty 和 Shell 的关系这里就不叙述了。

使用 ps 命令来查看进程状态,可以确定哪些进程僵死或过多占用资源等。通常使用 ps aux 来查看具体进程:

PID 表示进程的id, %CPU 、 %MEM 分别表示进程占用CPU和内存的比重, VSZ 表示使用掉的虚拟内存(KB), RSS 表示占用的固定内存(KB), TT 表示在哪个Terminal上执行, STAT 表示该进程目前的状态。

关于 STAT 的状态码:

查询到进程之后可以使用 kill 命令用来终止进程:

至于 SignalNumber 可以通过命令 kill l 获取:

其中常用的为9(SIGKILL),对付大多数程序可以 kill -9 PID 直接干掉。

其他常用的系统命令有查看时间的命令 date :

查看日历的命令 cal :

cal 命令后面可接年份,例如 cal 2017 ,也可以接月份+年份,例如 cal 8 2018 表示展现2018年8月的日历。

对于常用的命令可以使用 alias 为其添加别名,例如:

删除别名可以使用 unalias :

使用 control + C 可以终止持续进行的命令,例如 ping 命令。

使用 control + D 或者 exit 命令可以结束当前状态,例如结束 ssh 的远程链接。

使用 control + L 或者 clear 命令可以清屏,与 reset 命令不同的是, clear 可以滚动查看之前的内容,而 reset 则是完全清除内容。

使用 history 命令可以查询执行命令的历史记录 history PageCnt :

连续写了两天时间,期间不断的去查询和完善内容,感觉这个过程又收获了很多知识。

Terminal的强大只有真正融入进去才能感受得到,以上这些都只是本人在工作中遇到的最基本的内容,说成冰山一角毫不为过,所以日后遇到新的内容还会继续进行补充更新。

最后,很多命令下的参数都有不同的用法,当遇到问题了请熟练地使用 man 命令,希望对您有所帮助。

ls 指令是Linux下最常用的指令之一。

ls 命令将每个由 Directory 参数指定的目录或者每个由 File 参数指定的名称写到标准输出,以及您所要求的和标志一起的其它信息。

如果不指定 File 或 Directory 参数, ls 命令显示当前目录的内容。

基本介绍 中文名 :ls 类属 :指令 所属领域 :计算机 套用范围 :linux 指令释义,描述,许可权表示,标志,注意事项, 指令释义 ls 指令可以说是Linux下最常用的指令之一。它有许多的选项,下面列出了 ls 指令的绝大多数选项。 List information about the FILEs (the current directory by default)Sort entries alphabetically if none of -cftuvSUX nor --sort is specified 用法:ls [选项] [档案] 运用举例:

1列出具体档案 #ls -al 这个最常用,可是往往又不彻底符合要求,

2列出一切子目录的档案:#ls -R 上个指令仅仅列出了本目录下的一切目录和档案,可是目录下的档案不会循环的列出。

3若是档案过多一屏看不完,怎么办?并且,关于想找到许多档案中的某个档案的姓名。

31分屏显现:#ls -l|more 能在当时屏退出,很有用,但不能一页一页翻屏

#ls -l|less 能用pgup,pgdw 翻页,但不能在当时方位退出

32横向输出尽可能多的显现档案姓名: #ls -m

-a 列出目录下的一切档案,包含以 最初的隐含档案。常用

-m 横向输出档案名称,并以“,”作分格符。

-c 输出档案的 i 节点的修正时刻,并以此排序。

-R 列出一切子目录下的档案。

-l 列出档案的具体信息。

-s 在每个档案名称后输出该档案的巨细。

-k 以 k 位元组的方式表明档案的巨细。

-i 输出档案的 i 节点的索引信息。

2只显现目录:#ls -l |grep ^d 3只显现非目录档案:#ls -l |grep ^[^d]

3对输出档案进行各种排序;

31 依照字元序(default): #ls -l

32 依照修正时刻排序: #ls -t 近来修正在最上面

33 逆排序 : #ls -r

34 按档案巨细排序 :#ls -S 大档案的在上

35 依照档案扩展名(最终一个后的字元)排序: #ls -X

36 按数字排序 :#ls -lv

-t 以时刻排序。

-r 对目录反向排序

-f -U 对输出的档案不排序。

-X 以档案的扩展名(最终一个 后的字元)排序。

-S 以档案巨细排序。

-u 以档案前次被拜访的时刻排序。 

-n 用数字的 UID,GID 替代称号。

-o 显现档案的除组信息外的具体信息。

-p -F 在每个档案名称后附上一个字元以阐明该档案的类型,“”表明可执行的一般

档案;“/”表明目录;“@”表明符号连线;“|”表明FIFOs;“=”表明套接字(sockets)。

-q 用替代不行输出的字元。 

-x 按列输出,横向排序。

暂时无用选项:

-b 把档案名称中不可输出的字元用反斜杠加字元编号(就象在C言语里相同)的方式列出。不常用

-d 将目录象档案相同显现,而不是显现其下的档案。

-e 输出时刻的悉数信息,而不是输出简略信息。 没用

-g 无用。

-A 显现除 “”和“”外的一切档案。

-B 不输出以 “~”结束的备份档案。

-C 按列输出,纵向排序。

-G 输出档案的组的信息。

-L 列出连线档案名称而不是连线到的档案。

-N 不约束档案长度。

-Q 把输出的档案名称用双引号括起来。 

-1 一行只输出一个档案。

--color=no 不显现五颜六色档案名称

--help 在规范输出上显现协助信息。

--version 在规范输出上输出版别信息并退出 描述 ls 命令将每个由 Directory 参数指定的目录或者每个由 File 参数指定的名称写到标准输出,以及您所要求的和标志一起的其它信息。如果不指定 File 或 Directory 参数, ls 命令显示当前目录的内容。 在互斥对中指定多个选项不看成错误。每对中最后一个指定的选项确定输出格式。 预设情况下,ls 命令按照档案名称的字母顺序显示所有信息。整理顺序由环境变数 LANG 或 LC_COLLATE 环境变数确定。在 AIX 5L Version 52 General Programming Concepts: Writing and Debugging Programs 中的 "National Language Support Overview for Programming" 包含更多细节。 当 ls 命令显示目录内容时,它不显示名称以 (点)开头的档案项,除非使用了 -a 或者 -A 标志。如果命令由 root 用户执行,它预设使用 -A 标志。 格式化输出有三种主要方式: 每行列出一项。 通过指定 -C 或 -x 标志以多列列出各项。当向 tty 输出时,-C 标志是预设格式。如果档案或目录名太长,ls 命令显示单列输出。 通过指定 -m 标志可以以逗号分隔系列列出项。 要确定输出行中字元位置的数目,ls 命令使用环境变数 COLUMNS。如果没有设定此变数,命令获取显示的当前列值。如果使用这些方法,ls 命令还不能确定字元位置的数量,它就使用预设值 80。 使用 -e 和 -l 标志所显示的方式解释如下: 如果第一个字元是: d 此项为目录。 b 此项为块特殊档案。 c 此项为字元特殊档案。 l 此项为符号连结,或者指定 -N 标志,或者符号连结不指向现有档案。 p 此项为一个先进先出(FIFO)特殊档案。 s 此项为本地套接字。 - 此项为普通档案。 接下来的 9 个字元被分成 3 个集合,每个集合 3 个字元。第一组 3 字元集合显示所有者许可权。下一组 3 字元集合显示了组中其它用户的许可权。最后 3 字元集合显示了访问此档案的其它任何人的许可权。每个集合中的三个字元各自表示了档案的读、写和执行许可权。目录的执行许可权让您可以搜寻目录中的指定档案。 许可权表示 如下: r 读 w 写(编辑) x 执行(搜寻) - 没有授予相应的许可权 如果档案有 set-group-ID 方式,那么组执行许可权字元是 s。如果档案有 set-user-ID 方式,则用户执行许可权字元是 s。如果方式位被设定为 01000(八进制)(请参阅 chmod 命令以获得此方式的含义),最后一个方式字元(通常 x 或者 -)是 T。如果没有设定相应的执行许可权,set-ID 的指示和方式位 01000 以大写字母开头(分别为 S 和 T)。方式 t 表示粘滞位是为档案或目录而设定的。 当使用 -e 标志时,其显示方式与使用 -l 标志一样,除了多出了第 11 个字元,其解释如下: + 表示档案有扩展安全性信息。例如,档案可能在方式中有扩展的 ACL、TCB 或者 TP 属性。 通过使用 aclget 命令,可以显示档案的访问控制信息(ACL)。通过使用 chtcb 命令,可以显示 TCB 和 TP 属性的值。 - 表示档案没有扩展安全性信息。 当列出目录中档案大小时,ls 命令显示块总数,包括间接块。 标志 -A 列出所有条目,除了 (点)和 (点-点)。 -a 列出目录中所有项,包括以 (点)开始的项。 -b 以八进制 ( \nnn) 表示法显示非列印字元。 -c 使用索引节点最近一次修改的时间,用以排序(当带 -t 标志使用时)或者用以显示(当带 -l 标志使用时)。该标志必须和 -t 或 -l 标志或者两者一起使用。 -C 以多列纵向排序输出。当往终端输出时,此为预设方法。 -d 仅仅显示指定目录信息。目录和档案一样处理,这在当使用 -l 标志获取目录状态时非常有用。 -e 显示方式(包括安全信息)、连结数目、所有者、组、大小(按位元组)、最近修改时间和每个档案名称称。如果档案是特殊档案,大小栏位包含主要和次要设备数目。如果档案是符号连结,会列印所连结到的档案的路径名,其前有 ->(减号,大于号)符号。显示符号连结的属性。 -E 列出档案的保留空间、固定范围大小和范围分配标志信息。使用该标志时,必须指定 -l 标志。 -f 在每个存储槽中列出 Directory 参数指定的每个目录的名称。该标志关闭 -l、-t、 -s 和 -r 标志并且开启 -a 标志。列表的顺序就是项出现在目录中的顺序。 -F 如果档案是目录,在档案名称后面放置一个 /(斜杠),如果档案可执行,则放置一个 (星号),如果档案为套接字,则放置一个 =(等号),如果为 FIFO,则放置一个 |(管道)符号,如果是符号连结,则放置一个 @。 注:只有在使用 -N 标志或者连结指向一个不存在的档案时,符号连结显示时才后跟 ->。否则,显示目标档案的有关信息。通过输入 ls -f 命令,也可以调用此选项。 -g 与使用 -l 标志时显示同样的信息,除了 -g 标志禁止显示所有者和符号连结信息。 -H 如果在命令行上指定了引用类型目录档案的符号连结,ls 命令将档案信息和档案类型估计为由连结引用的档案的信息和类型,而非连结本身;然而,ls 命令将写连结本身的名称,而非由连结引用的档案。 -i 显示每个档案报告第一列中的索引节点数目。 -L 列出连结引用的档案或目录内容。此为预设 *** 作。后跟符号连结。如果使用 -l 选项,-N 选项就成为预设值,不后跟符号连结。当使用 -l 选项时,仅有 -L 选项能够覆盖 -N 预设值。 -l (L 的小写)显示方式、连结数目、所有者、组、大小(按位元组)和每个档案最近一次修改时间。如果档案是特殊档案,大小栏位包含主要和次要设备数目。如果最近一次修改时间大于六个月之前,时间栏位以 月份 日期 年份 的格式显示,然而六个月内修改的档案以 月份 日期 时间 的格式显示。 如果档案是符号连结,,列印所连结到的档案的路径名,其前跟 ->。显示符号连结的属性。-n、-g、和 -o 标志覆盖 -l 标志。 注意事项 1 符号连结档案后跟一个箭头,然后是符号连结的内容。 2 当使用 -l 选项时,通过执行 mkpasswd 命令,可以提高 ls 命令的执行性能。当目录包含不同用户拥有的档案时,这非常有用,比如 /tmp 目录。 -m 使用流输出格式(逗号分隔系列)。 -n -n 标志除显示用户和组 ID 而不是用户和组名称以外,它显示和 -l 标志同样的信息。 -N 当确定档案状态时,不跟在符号连结之后。 注:如果使用 -L 和 -N 两个标志,最后一个标志起作用。同样的,任何时候给定一个包含以 /(斜杠)作为最后字元的符号连结,不管使用何种选项,后面都会跟有连结。 -o -o 标志除禁止显示组和符号连结信息之外,它显示和 -l 标志同样的信息。 -p 如果档案是目录,在每个档案名称后面放置一个斜杠。当将 ls 命令的输出通过管道传递到 pr 命令时,这很有用,如下所示: ls -p | pr -5 -t -w80 -q 将档案名称中的非列印字元显示成 (问号)。 -r 反转排序顺序,适当的按字母逆向排序或者首先排序最旧的档案。 -R 递归列出所有子目录。 -s 按照千位元组(包括间接块)给出每一项的大小。 -t 按照最近一次修改时间(最近的最先)而不是名称排序。 -u 使用最近访问时间,而不是最近修改时间用以排序(当使用 -t 标志)或者显示(当使用 -l 标志)。如果不和 -t 或 -l 标志或两者一起使用,则该标志无效。 -x 以多列格式横向排序输出。 -1 强制输出为每行一项格式。当输出没有定向到终端时,此为预设值。 退出状态 此命令返回以下退出值: 0 写所有档案成功。 >0 产生错误。 示例 1 要列出当前目录中的所有档案,请输入: ls -a 列出所有档案,包括 (点)、(点点)和其他以点开头的档案。 2 要显示详细信息,请输入: ls -l chap1 profile 显示一个长列表,包括关于 chap1 和 profile 的详细信息。 3 要显示有关目录的详细信息,请输入: ls -d -l manual manual/chap1 显示目录 和 manual 以及档案 manual/chap1 的长列表。不使用 -d 标志时,会列出 和 manual 目录中的所有档案,而不是关于目录本身的详细信息。 4 要按照修改时间列出档案,请输入: ls -l -t 显示最近被修改档案的长列表,较旧的档案跟在后面。 档案 /usr/bin/ls 包含 ls 命令。 /etc/passwd 包含用户 ID。 /etc/group 包含组 ID。 /usr/share/lib/terminfo/ 包含终端信息。

ls-l命令执行结果显示常见的设备类型符号有Linux 命令ls -l 是用来查看详细的文件资料的,ls -l出来的是各个文件或目录的详细信息。

用ls –l以长模式察看文件的详细信息§包含当前目录的硬盘使用空间、文件类型、文件权限、硬连接数、文件拥有者、文件所属组、文件大小、更动时间、文件名。

格式化输出有三种主要方式:

每行列出一项。通过指定 -C 或 -x 标志以多列列出各项。当向 tty 输出时,-C 标志是缺省格式。如果文件或目录名太长,ls 命令显示单列输出,通过指定 -m 标志可以以逗号分隔系列列出项。

要确定输出行中字符位置的数目,ls 命令使用环境变量 COLUMNS。如果没有设置此变量,命令获取显示的当前列值。如果使用这些方法,ls 命令还不能确定字符位置的数量,它就使用缺省值 80。

作为系统管理员,你可能经常会(在某个时候)需要查看系统中有哪些用户正在活动。有些时候,你甚至需要知道他(她)们正在做什么。本文为我们总结了4种查看系统用户信息(通过编号(ID))的方法。

1 使用w命令查看登录用户正在使用的进程信息

w命令用于显示已经登录系统的用户的名称,以及他们正在做的事。该命令所使用的信息来源于/var/run/utmp文件。w命令输出的信息包括:

用户名称

用户的机器名称或tty号

远程主机地址

用户登录系统的时间

空闲时间(作用不大)

附加到tty(终端)的进程所用的时间(JCPU时间)

当前进程所用时间(PCPU时间)

用户当前正在使用的命令

w命令还可以使用以下选项

-h忽略头文件信息

-u显示结果的加载时间

-s不显示JCPU, PCPU, 登录时间

$ w

23:04:27 up 29 days, 7:51, 3 users, load average: 004, 006, 002

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

ramesh pts/0 dev-db-server 22:57 800s 005s 001s sshd: ramesh [priv]

jason pts/1 dev-db-server 23:01 2:53 001s 001s -bash

john pts/2 dev-db-server 23:04 000s 000s 000s w

$ w -h

ramesh pts/0 dev-db-server 22:57 17:43 252s 001s sshd: ramesh [priv]

jason pts/1 dev-db-server 23:01 20:28 001s 001s -bash

john pts/2 dev-db-server 23:04 000s 003s 000s w -h

$ w -u

23:22:06 up 29 days, 8:08, 3 users, load average: 000, 000, 000

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

ramesh pts/0 dev-db-server 22:57 17:47 252s 249s top

jason pts/1 dev-db-server 23:01 20:32 001s 001s -bash

john pts/2 dev-db-server 23:04 000s 003s 000s w -u

$ w -s

23:22:10 up 29 days, 8:08, 3 users, load average: 000, 000, 000

USER TTY FROM IDLE WHAT

ramesh pts/0 dev-db-server 17:51 sshd: ramesh [priv]

jason pts/1 dev-db-server 20:36 -bash

john pts/2 dev-db-server 100s w -s

2使用who命令查看(登录)用户名称及所启动的进程

who命令用于列举出当前已登录系统的用户名称。其输出为:用户名、tty号、时间日期、主机地址。

$ who

ramesh pts/0 2009-03-28 22:57 (dev-db-server)

jason pts/1 2009-03-28 23:01 (dev-db-server)

john pts/2 2009-03-28 23:04 (dev-db-server)

如果只希望列出用户,可以使用如下语句:

$ who | cut -d' ' -f1 | sort | uniq

john

jason

ramesh

补充 :users命令,可用于打印输出登录服务器的用户名称。该命令除了有help和version选项外,再没有其他选项。如果某用户使用了多个终端,则相应的会显示多个重复的用户名。

$ users

john

jason

ramesh

3 使用whoami命令查看你所使用的登录名称

whoami命令用于显示登入的用户名。

$ whoami

john

whoami命令的执行效果和id -un的效果完全一样,例如:

$ id -un

john

whoami命令能显示当前登入的用户名称,以及当前所使用的tty信息。该命令的输出结果包括如下内容:用户名、tty名、当前时间日期,同时还包括用户登录系统所使用的链接地址。

$ who am i

john pts/2 2009-03-28 23:04 (dev-db-server)

$ who mom likes

john pts/2 2009-03-28 23:04 (dev-db-server) Warning:

Don't try " who mom hates " command

当然,如果你使用su命令改变用户,则该命令(whoami)所显示的结果将随之改变。

4 随时查看系统的历史信息(曾经使用过系统的用户信息)

last命令可用于显示特定用户登录系统的历史记录。如果没有指定任何参数,则显示所有用户的历史信息。在默认情况下,这些信息(所显示的信息)将来源于/var/log/wtmp文件。该命令的输出结果包含以下几列信息:

用户名称

tty设备号

历史登录时间日期

登出时间日期

总工作时间

$ last jason

jason pts/0 dev-db-server Fri Mar 27 22:57 still logged in

jason pts/0 dev-db-server Fri Mar 27 22:09 - 22:54 (00:45)

jason pts/0 dev-db-server Wed Mar 25 19:58 - 22:26 (02:28)

jason pts/1 dev-db-server Mon Mar 16 20:10 - 21:44 (01:33)

jason pts/0 19216820111 Fri Mar 13 08:35 - 16:46 (08:11)

jason pts/1 19216820112 Thu Mar 12 09:03 - 09:19 (00:15)

jason pts/0 dev-db-server Wed Mar 11 20:11 - 20:50 (00:39

转自: >

手机TTY模式的全称叫做Teletypewriter,也就是文字电话的意思,TTY 也叫做TDD,是供聋人用电报交流的设备。TTY原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西。

扩展资料:

在Xwindow模式下的伪终端如在Kubuntu下用konsole,就是用的虚拟终端,用tty命令可看到/dev/pts/name, name为当前用户名。

Linux系统中还针对很多不同的字符设备存在有很多其它种类的终端设备特殊文件。例如针对ISDN设备的/dev/ttyIn终端设备等。tty设备包括虚拟控制台,串口以及伪终端设备。

Text Telephones是在手机插入专用设备后支持收发文本,需网络支持,中国网络不支持TTY。除聋哑模式外,还支持只听不说(HCO)和只说不听(VCO)两种模式

参考资料:

百度百科-TTY

以上就是关于linux命令详解之at全部的内容,包括:linux命令详解之at、请问在linux下 console ,tty 和tty0有什么区别!、终端、控制台、tty、shell等区别与概念初辨析等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/10206602.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存