Reading view

There are new articles available, click to refresh the page.

前 Android 团队再度聚首,计划开发 AI 时代的「操作系统」

人工智能助理,或者「AI 代理」无疑是近期 AI 领域的热词之一,许多科技公司都已经在这条赛道上押宝。

以移动端为例,苹果为了使其智能助理「Siri」更加聪明,为其接入了大语言模型 ChatGPT,并计划使其拥有感知和理解屏幕内容的能力。

荣耀在不久之前发布的 Magic 9.0 系统则标志着手机正式进入「自动驾驶」时代,其内置的「YOYO 智能体」得益于 AI 内核的加持,还能实现「一句话操控手机」。

▲图源:TechRadar

而在 AI 技术同样深度介入的 PC 端,人工智能助理的能力也不容忽视:Anthropic 在上个月发布的最新 Claude 模型中同步推出了「computer use」功能,旨在代替用户直接与计算机进行交互。

据悉,OpenAI 也有计划入局该领域,将于明年 1 月推出一款名为「Operator」的 AI 代理。OpenAI 首席产品官凯文·韦尔(Kevin Weil)表示让 ChatGPT 具备自主执行任务的能力将是明年 OpenAI 的一大重点。

▲图源:TNCR

在 Android 操作系统出现之前,即使移动平台的前景相当广阔,但作为开发者来讲,在移动设备上构建任何东西都很困难。

对此,前 Google 高管大卫·辛格尔顿(David Singleton)认为在人工智能时代,同样的情况正在上演。他指出「我们可以看到 AI 的前景,但作为开发人员,构建任何好的东西真的很难」。

基于以上理念和考虑,辛格尔顿同前 Google 副总裁雨果·巴拉(Hugo Barra)等人联合创办了 AI Agent 操作系统创企「/dev/agents」。后者于 26 日在 X 上公开宣布了这一消息。

▲图源 :X

/dev/agents 在今年 10 月成立,总部位于美国旧金山,目前已经不再处于隐身状态。正如巴拉在推文中所说,新公司将「回到我们的 Android 根源,为人们和 AI 代理构建一个新的操作系统」。

换句话说,目前开发者缺乏构建 AI 代理的标准工具和系统,而 /dev/agents 计划构建一个统一的、基于云的跨平台操作系统,进而充分实发挥 AI 代理的潜力。公司预计将在明年初到中旬推出其产品的第一个版本。

这相当于一个「通用技术框架」,类似于 iOS 或者 Android 操作系统。此外,该公司还计划使用生成式 AI 提供个性化的用户界面,让人们能够更自然地与硬件设备上的代理进行交互。

▲图源:MakeUseOf

值得一提的是,/dev/agents 的联合创始人们个个来头不小。公司的 CEO 辛格尔顿在谷歌期间领导了安卓核心应用的开发和 Google Store 团队,末期则主要负责可穿戴设备安卓系统。后来离开谷歌,加入了金融科技企业 Stripe。

/dev/agents 的 CPO 巴拉此前在谷歌担任移动业务产品经理,负责移动与安卓业务,后来加入 Android 团队,负责整个安卓生态系统的软硬件业务,一路升至谷歌副总裁的职位。2013 年,巴拉加入小米集团,全权负责其海外业务。

公司的 CTO 和设计负责人分别由费卡斯·柯克帕特里克(Ficus Kirkpatrick)和尼古拉斯·吉特科夫(Nicholas Jitkoff)担任,前者负责安卓 1.0 版本从内核到应用程序所有层级的软件堆栈,后者则是初代安卓语音搜索和操作的负责人。

除了四位联合创始人以外,/dev/agents 还有另外两名员工。巴拉表示「这是一个构建了过去三代操作系统(安卓系统、可穿戴设备和 AR/VR)的团队」。

▲David Singleton(图源:CNBC)

也正是因为如此「豪华」的初创阵容,使得 /dev/agents 已经筹集到了 5600 万美元的种子轮融资,与此同时本轮融资对公司的估值达到 5 亿美元。

领投的风险投资公司「Index Ventures」的合伙人尼娜·阿查吉安(Nina Achadjian)认为创始人的背景是决定投资的核心,并且表示她抓住了支持该公司的机会:

这是一个非常困难的技术问题,也是一个非常大的想法。如果有一个团队来做这件事的话,从头开始构建 Android 和 Stripe 的团队,应该成为这个团队。

联合领投的 Alphabet 的独立成长基金 CapitalG 更是毫不吝啬对四位联合创始人的赞美,称他们是「本世纪每一次重大计算平台转变的先驱」,并且作为投资者,「遇到像这样出色的创始团队确实很少见」。

▲图源:CaptialG

许多投资者相信 AI 代理的功能将会越来越齐全,但同时他们也承认目前仍然没有通用的 AI 基础设施。尽管不少公司正在开发 AI 代理框架的不同部分,但 /dev/agents 的支持者认为,新的第三方操作系统将会成为释放潜力的关键。

另外,辛格尔顿表示 /dev/agents 的商业模式与 Android 的获利方式大致相同,可能会从销售额中分成,或向用户收取订阅费用。他还表示公司计划保持相对灵活的运营模式,类似于 Android 早期。

辛格尔顿在接受彭博社采访时说「我们需要一个类似 Android 的 AI 时刻」,这也是他对 /dev/agents 和人工智能代理的未来愿景。

#欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。

爱范儿 | 原文链接 · 查看评论 · 新浪微博


AI 生态浪潮下,TWS 耳机应有怎样的自我修养?

不知道你有没有发现,AI 大模型正在潜移默化地影响着我们在数字生活里的许多行为习惯。

从拍照识图到 AI 对象消除,从多轮对话到近乎真人的 AI 情感陪伴,AI 大语言模型等技术不仅拓宽了手机等终端设备的功能边界,也进一步加强了我们对它的依赖。

虽然在现有的市场格局下,那些所谓的 AI OS 尚未产生重大影响,但大模型的潜力不可忽视,未来的智能手机、AI 耳机、智能手表未必一定是今天的样子。

所以业内现在已经存在着一个共识:AI 并非万能,但没有 AI 却是万万不能。

在今年 6 月的 HDC2024 上,鸿蒙操作系统迎来了自诞生以来最大的一次更新,正式发布了 HarmonyOS NEXT 系统,也就是剥离安卓源代码的「纯血鸿蒙」,并且带来了系统级 AI 能力。

「鸿蒙原生智能」把分散在大模型和应用里的 AI 能力,聚合成为适用于每个普通用户的日常体验,从底层架构开始追逐全场景智能的高效协同体验。

11 月 26 日,随着华为Mate 70 系列的发布,我们也迎来了第一款搭载 HarmonyOS NEXT 系统的旗舰 TWS 耳机——华为FreeBuds Pro 4。

鸿蒙 NEXT 的 AI 能力,也开始从手机延伸到原生鸿蒙的 TWS 耳机之中。

生态之中,耳机与手机唇齿相依

近十年间,消失于智能手机之上的 3.5mm 耳机孔,催生了 TWS 耳机的繁荣业态。换句话说,几乎每人一部智能手机的同时,也意味着几乎每人都会拥有一副 TWS 耳机。

在 IDC 最新的《全球可穿戴设备追踪报告》中可以看到,耳穿戴设备预计在 2024 年依然保持着稳健增长

保持增长的原因是新兴市场的进一步普及和成熟市场的更新周期的开始,尤其是成熟市场的消费者在期望更换新一代的耳穿戴设备产品(耳机)来满足日常更多不同场景下的细分需求,甚至在考虑为多个不同的场景而配备多副耳机。

换句话说,消费者对新时代耳机日益增长的功能需求,正促使厂商进行新一轮的技术革新和产品迭代。而在 AI 大模型赋能系统交互的浪潮下,TWS 耳机与手机之间的关系正变得前所未有的紧密。

皆因手机和耳机之间,逐渐形成了「主机与终端」的关系联结——手机作为核心计算和连接枢纽,为 TWS 耳机提供了不可或缺的算力和网络连接能力;同时耳机也延伸并增强了手机的 AI 交互体验,在用户的耳边提供了智能语音助手的自然入口,并在多场景之中将手机的 AI 能力延伸到更加便捷和多元的使用场景。

正如刚刚发布的华为FreeBuds Pro 4,只要你将耳机佩戴在耳边并与手机保持连接,随时随地都能够轻声说出「小艺小艺」这句话来唤醒手机内的「小艺智能体」并来到你的耳边,聆听你的指令。

▲ 通过华为FreeBuds Pro 4 来直接调用手机上的小艺智能体

其中当属「随时随地」的体验最为难能可贵,这意味着你可以在手机息屏,或者是在湿手/烹饪/绘画等不想要直接操作手机的场景下,直接用耳机就能唤醒小艺来执行相应的语音指令,包括但不限于接打电话、音乐播放、耳机降噪、控制智能家居、设定闹钟或定时器、记录备忘录等等功能。

甚至是在你有差旅计划的时候,也可以通过耳机下达语音指令让小艺推荐出行计划、搜索导航路线、查看机票等等,而来到耳边的小艺也不负众望,跳过了一系列繁琐的聚合搜索操作,直接将结果呈现于屏幕之上,并在你的耳边一一述说。

尤其是需要轻声细语且不便掏出手机的场景,你也可以通过触碰耳机上的触控按钮来唤醒小艺,让华为FreeBuds Pro 4 耳机腔体上的三麦克风来精准地拾录你的语音指令,再将结果传递到你的耳边。

▲ 「小艺翻译」内搭载的「面对面翻译」功能,可以调用FreeBuds Pro 4 来聆听对话并进行翻译语音反馈

首发的「小艺翻译」功能更是支持「面对面翻译」和「同声传译」功能——只需要佩戴着华为FreeBuds Pro 4,耳机就能够收录对方的声音,并实时将翻译结果传达到你的耳边,传译所需的时延极低,戴着耳机就像是身边带着一个专业的翻译助理。

显然,基于大语言模型升级之后的小艺智能体,已经成为一个称职的私人生活管家、办公助手、娱乐助理。从这个角度来看,为了打造一种「用过就离不开」的 AI 交互体验,华为FreeBuds Pro 4 应该就是搭载原生鸿蒙系统的华为手机们,最亲密的智慧伴侣。

从弱连接到强连接,耳机与手机从未如此紧密

在 AI 时代,TWS 耳机和智能手机的「连接」,不仅是对基础听音功能的实现,更是成为对 AI 智慧能力尽情发挥的关键环节。尤其是 AI 驱动的功能,例如智慧问答、智慧翻译等功能,都是需要耳机和手机之间进行高频且大量的数据交换,这也就意味着手机和耳机之间,需要具备超低延迟且高带宽的传输能力。

与此同时,耳机和手机的连接需要在各种复杂的环境中保持稳定,尤其是在人群密集区域或信号干扰的场景下,耳机和手机之间的连接,也需要具备更优的抗干扰能力和可靠持续的连接稳定性。

不难看出,要满足手机和耳机 1+1>2 的 AI 智慧交互体验,对 TWS 耳机与手机之间传输的低延时、稳定性和速度,又提出了新的要求。

为了获得「无线胜有线」的连接能力,华为在 TWS 耳机上引入了星闪连接核心技术——暨 Polar 码技术。

得益于麒麟 A2 芯片和星闪连接技术,华为FreeBuds Pro 4 的传输速率有了 53% 的提升——除了可以基于 L2HC 4.0 编解码技术提供 2.3Mbps 无损音质传输以外,还大幅提升了无线抗干扰能力,在更远的距离上依然能够与鸿蒙原生手机保持稳定的连接,同时也保持着更低的时延和更高的响应效率。

就目前的能力体现而言,在短距离无线通信领域上,如果说蓝牙是「弱连接」,那么星闪(NearLink)就是「强连接」。有了「星闪」,华为耳机与华为手机的关系从未如此紧密可靠。

当然,对于 TWS 耳机而言,有了紧密的无线连接也还是需要直面「随手丢」的遗落痛点,在社交媒体上我们经常可以看到有用户在抱怨 TWS 耳机不小心弄丢了的情况,甚至因为 TWS 耳机太多人遗失了单边耳机或者耳机盒,社媒上还催生了「无线耳机相亲角」的相关话题。

为此,华为FreeBuds Pro 4 支持「离线查找」功能,启用「查找」之后,即便耳机或充电盒不在身边,也能通过远距离地图定位具体的位置,并且支持智能遗落提醒和耳机上线通知功能。同时有赖于「强连接」的星闪功能,华为FreeBuds Pro 4 的耳机盒支持「星闪查找」功能,用户可以在清晰的方位指引下,快速定位耳机盒的位置,而且耳机盒还可以响铃提升,帮助用户快速寻回。

华为表示,FreeBuds Pro 4 还支持「楼层定位」功能,可以通过华为查找网络查看丢失耳机的具体楼层位置。预计到 2024 年底,楼层定位能力将覆盖全国超过 300 个省市地区的 8000 多个大型商场、机场、高铁站等公共场所。

AI 生态中,TWS 耳机应有怎样自我修养?

不难发现,现有的 TWS 耳机使用痛点,无论是音质、稳定性、抗干扰等等,本质上都是「连接」的问题。

显然,擅长于「连接好一切」的华为,早已明晰了提升 TWS 耳机连接能力的重要性,并持续通过技术创新来解决一切与「连接」相关的难题。

纵观华为公司的发展历程,你会发现华为的确很执着、也很擅长于做好「连接」这件事情。

作为全球领先的通信设备供应商,华为在移动通信领域拥有丰富的经验和技术储备。从 2G 到 5G,华为始终处于行业前沿,提供高质量的网络设备和解决方案,确保全球数十亿用户的稳定连接。

值得一提的是,星闪技术起源于华为的超级蓝牙(绿牙)技术,绿牙不但能够涵盖传统蓝牙的功能,而且实测下来的稳定性和极限距离都远超当时的传统蓝牙技术。为了加快我国科技自立自强的步伐,华为继续投入研发这个新一代无线短距通信技术,并作为主要的技术贡献方,在 2020 年牵头成立了负责制定和规范星闪技术的「星闪联盟」。

作为中国自主原生的新一代无线短距通信技术,星闪在低时延、多链接、局域无线长距离高速要求等场景下均有显著优势。在 HDC2023 上,华为终端正式宣布,将星闪技术纳入到鸿蒙生态当中,让星闪为鸿蒙生态的万物互联提供一个坚实可靠的连接技术底座。

于是在 AI 浪潮迅速席卷全球消费电子领域的当下,我们在搭载原生鸿蒙系统的华为FreeBuds Pro 4 身上,确实是可以窥见智慧耳机必备的一些「自我修养」。

核心,是智慧耳机必须要与手机长期保持「强连接」,用更加粗壮的无形耳机线来拓宽 TWS 耳机音质和降噪的上限,让耳机的「基本功」表现得更加扎实。

其次,作为手机 AI 能力的延伸,TWS 耳机不再是单一的音频设备,而是化身成为 AI 生态里深度整合的交互终端,以「强连接」来实现对精准语音的识别并带来几乎无延迟的反馈,让小艺智能体可以像《钢铁侠》里的贾维斯一样,做到如影随形,瞬时响应并且越用越懂你。

可能随着未来技术的进一步发展,AI 耳机内在的算力会进一步暴涨,有望真的可以在端侧加载一个像「贾维斯」那样复杂的拟人化 AI 助手,可以完成更多的事情。我们也在华为的专利库当中,看到了 TWS 耳机有望增加一个低功耗的摄像头来智能识别周遭环境路况,从而提升佩戴者的出行安全。

但就目前而言,唯有让手机与耳机之间实现高效协作,依托于手机的算力和耳机的交互特性,才能让 AI 能力真正能够融入用户的日常生活,带来更优的体验。

如你所见,在以华为手机为核心的原生鸿蒙系统的生态之中,华为耳机与华为手机不再是单一的独立设备,而是共同组成了一个浑然一体的超级终端,共同构建出完整的鸿蒙生态系统体验。

说到这里,大家应该就可以理解,为什么能够说华为FreeBuds Pro 4 作为首款搭载 HarmonyOS NEXT 的智慧耳机,与首款出厂就预装 HarmonyOS NEXT 的华为 Mate 70 系列手机,天生便是一体。

#欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。

爱范儿 | 原文链接 · 查看评论 · 新浪微博


AI 会促使设计师成为更完整的人

最近关于 AIGC 的关注度太高了,自己也时不时会抽空去了解一些情况,或者尝试去用一些工具。很多关于 AI 要替代人的观点大行其道,也一直有不少 AI 要让设计师失业的看法在坊间流传。但我自己的感受和看法是:

在 Midjourney、Stable Diffusion、ChatGPT 这些 AI 工具出现后,「手头功夫」并没有因此丧失意义,它们只是不再具备作为门槛的价值,但依旧是重要的前提。因为「手头功夫」是培养我们发掘问题、判断优劣和快速取舍的重要训练,缺少这部分锻炼,会让人在这一系列 AI 工具面前感到无力。准确地识别问题并提出诉求,这是未来教育的重中之重,也会反过来强调人的价值。

正好,前段时间后浪送了我一本书,是前微软包容性设计的首席总监 Kat Holmes 写的《误配》。一边看这本书,我就一边在结合自己的工作和最近关于 AIGC 的思考,我觉得这本书里提倡的理念,正好回应了当下的舆论思潮。

大部分谈论设计的书,都在试图通过图形和案例来构建一类理论和范式。但在这个 AIGC 日进八万步的新时代里,设计师要以什么身份来参与?我认为所有的既定范式,都会在三到五年之内被全部击碎。串联、融汇、杂交才是新世界的主流,创作者的身份将愈加模糊,甲乙方的界限也会逐渐消失或扭转。怎么回应这样的快速变化?我觉得《误配》这本首版于五年前的「旧书」,提出了很适合当下思考的母题:

设计行为、设计师、设计对象以及新技术之间,如何在智能化浪潮里,互相包容和一起进化?

这本书没有给出直接的答案,但对于有三年以上工作经验的设计师而言,带着经验、问题和困难去阅读,会有启发和收获。「物」的旧体系正在溃散,「系统」和「生态」将是历史的新主角。旧时代的残党,可以下船了。

昨天在各个社交媒体上发了一下自己的读书感受,因为被后浪的微博官号转发了,于是被这本书的译者何盈女士注意到。正巧我的朋友宋喆在刷朋友圈时看到她的这条寻人启事,就这么阴差阳错地跟她直接联系上了。

这种「地球村」的感觉很妙!

这更坚定了我今年一定要 重新启动设计纪录片 的决心了!

Linux Command Line Reference for Common Operations (2)


My previous reference for practical Linux commands was surprisingly popular
with over 3.5 million hits in nearly 5 years. So I've decided to start compiling
another list of somewhat more involved/esoteric commands.
Examples marked with • are valid/safe to paste without modification into a terminal, so
you may want to keep a terminal window open while reading this so you can cut & paste.
CommandDescription
grep . /proc/sys/net/ipv4/*List the contents of flag files
set | grep $USERSearch current environment
tr '\0' '\n' < /proc/$$/environDisplay the startup environment for any process
echo $PATH | tr : '\n'Display the $PATH one per line
kill -0 $$ && echo process exists and can accept signalsCheck for the existence of a process (pid)
find /etc -readable | xargs less -K -p'*ntp' -j $((${LINES:-25}/2))Search paths and data with full context. Use n to iterate
Low impact admin
#apt-get install "package" -o Acquire::http::Dl-Limit=42 \
-o Acquire::Queue-mode=access
Rate limit apt-get to 42KB/s
 echo 'wget url' | at 01:00Download url at 1AM to current dir
#apache2ctl configtest && apache2ctl gracefulRestart apache if config is OK
nice openssl speed sha1Run a low priority command (openssl benchmark)
chrt -i 0 openssl speed sha1Run a low priority command (more effective than nice)
renice 19 -p $$; ionice -c3 -p $$Make shell (script) low priority. Use for non interactive tasks
Interactive monitoring
watch -t -n1 uptimeClock with system load
htop -d 5Better top (scrollable, tree view, lsof/strace integration, ...)
iotopWhat's doing I/O
#watch -d -n30 "nice ps_mem.py | tail -n $((${LINES:-12}-2))"What's using RAM
#iftopWhat's using the network. See also iptraf
#mtr www.pixelbeat.orgping and traceroute combined
Useful utilities
pv < /dev/zero > /dev/nullProgress Viewer for data copying from files and pipes
wkhtml2pdf http://.../linux_commands.html linux_commands.pdfMake a pdf of a web page
timeout 1 sleep 3run a command with bounded time. See also timeout
Networking
python -m SimpleHTTPServerServe current directory tree at http://$HOSTNAME:8000/
openssl s_client -connect www.google.com:443 </dev/null 2>&0 |
openssl x509 -dates -noout
Display the date range for a site's certs
curl -I www.pixelbeat.orgDisplay the server headers for a web site
#lsof -i tcp:80What's using port 80
#httpd -SDisplay a list of apache virtual hosts
vim scp://user@remote//path/to/fileEdit remote file using local vim. Good for high latency links
curl -s http://www.pixelbeat.org/pixelbeat.asc | gpg --importImport a gpg key from the web
tc qdisc add dev lo root handle 1:0 netem delay 20msecAdd 20ms latency to loopback device (for testing)
tc qdisc del dev lo rootRemove latency added above
Notification
echo "DISPLAY=$DISPLAY xmessage cooker" | at "NOW +30min"Popup reminder
notify-send "subject" "message"Display a gnome popup notification
 echo "mail -s 'go home' P@draigBrady.com < /dev/null" | at 17:30Email reminder
 uuencode file name | mail -s subject P@draigBrady.comSend a file via email
 ansi2html.sh | mail -a "Content-Type: text/html" P@draigBrady.comSend/Generate HTML email
Better default settings (useful in your .bashrc)
#tail -s.1 -f /var/log/messagesDisplay file additions more responsively
seq 100 | tail -n $((${LINES:-12}-2))Display as many lines as possible without scrolling
#tcpdump -s0Capture full network packets
Useful functions/aliases (useful in your .bashrc)
md () { mkdir -p "$1" && cd "$1"; }Change to a new directory
strerror() { python -c "import os; print os.strerror($1)"; }Display the meaning of an errno
plot() { { echo 'plot "-"' "$@"; cat; } | gnuplot -persist; }Plot stdin. (e.g: • seq 1000 | sed 's/.*/s(&)/' | bc -l | plot)
hili() { e="$1"; shift; grep --col=always -Eih "$e|$" "$@"; }highlight occurences of expr. (e.g: • env | hili $USER)
alias hd='od -Ax -tx1z -v'Hexdump. (usage e.g.: • hd /proc/self/cmdline | less)
alias realpath='readlink -f'Canonicalize path. (usage e.g.: • realpath ~/../$USER)
ord() { printf "0x%x\n" "'$1"; }shell version of the ord() function
chr() { printf $(printf '\\%03o\\n' "$1"); }shell version of the chr() function
Multimedia
DISPLAY=:0.0 import -window root orig.pngTake a (remote) screenshot
convert -filter catrom -resize '600x>' orig.png 600px_wide.pngShrink to width, computer gen images or screenshots
 mplayer -ao pcm -vo null -vc dummy /tmp/Flash*Extract audio from flash video to audiodump.wav
 ffmpeg -i filename.aviDisplay info about multimedia file
ffmpeg -f x11grab -s xga -r 25 -i :0 -sameq demo.mpgCapture video of an X display
DVD
 for i in $(seq 9); do ffmpeg -i $i.avi -target pal-dvd $i.mpg; doneConvert video to the correct encoding and aspect for DVD
 dvdauthor -odvd -t -v "pal,4:3,720xfull" *.mpg;dvdauthor -odvd -TBuild DVD file system. Use 16:9 for widescreen input
 growisofs -dvd-compat -Z /dev/dvd -dvd-video dvdBurn DVD file system to disc
Unicode
python -c "import unicodedata as u; print u.name(unichr(0x2028))"Lookup a unicode character
uconv -f utf8 -t utf8 -x nfcNormalize combining characters
printf '\300\200' | iconv -futf8 -tutf8 >/dev/nullValidate UTF-8
printf 'ŨTF8\n' | LANG=C grep --color=always '[^ -~]\+'Highlight non printable ASCII chars in UTF-8
fc-match -s "sans:lang=zh"List font match order for language and style
Development
gcc -march=native -E -v -</dev/null 2>&1|sed -n 's/.*-mar/-mar/p'Show autodetected gcc tuning params. See also gcccpuopt
for i in $(seq 4); do { [ $i = 1 ] && wget http://url.ie/6lko -qO-||
./a.out; } | tee /dev/tty | gcc -xc - 2>/dev/null; done
Compile and execute C code from stdin
cpp -dM /dev/nullShow all predefined macros
echo "#include <features.h>" | cpp -dN | grep "#define __USE_"Show all glibc feature macros
 gdb -tuiDebug showing source code context in separate windows
udev
udevadm info -a -p $(udevadm info -q path -n /dev/input/mouse0)List udev attributes of a device, for matching rules etc.
udevadm test /sys/class/input/mouse0See how udev rules are applied for a device
#udevadm control --reload-rulesReload udev rules after modification
Extended Attributes (Note you may need to (re)mount with "acl" or "user_xattr" options)
getfacl .Show ACLs for file
setfacl -m u:nobody:r .Allow a specific user to read file
setfacl -x u:nobody .Delete a specific user's rights to file
 setfacl --default -m group:users:rw- dir/Set umask for a for a specific dir
 getcap fileShow capabilities for a program
 setcap cap_net_raw+ep your_gtk_progAllow gtk program raw access to network
stat -c%C .Show SELinux context for file
 chcon ... fileSet SELinux context for file (see also restorecon)
getfattr -m- -d .Show all extended attributes (includes selinux,acls,...)
setfattr -n "user.foo" -v "bar" .Set arbitrary user attributes
BASH specific
echo 123 | tee >(tr 1 a) | tr 1 bSplit data to 2 commands (using process substitution)
 meld local_file <(ssh host cat remote_file)Compare a local and remote file (using process substitution)
Multicore
taskset -c 0 nprocRestrict a command to certain processors
find -type f -print0 | xargs -r0 -P$(nproc) -n10 md5sumProcess files in parallel over available processors
 sort -m <(sort data1) <(sort data2) >data.sortedSort separate data files over 2 processors

Linux Command Line Reference for Common Operations


This is a linux command line reference for common operations.
Examples marked with • are valid/safe to paste without modification into a terminal, so
you may want to keep a terminal window open while reading this so you can cut & paste.
All these commands have been tested both on Fedora and Ubuntu.
See also more linux commands.
CommandDescription
apropos whatisShow commands pertinent to string. See also threadsafe
man -t ascii | ps2pdf - > ascii.pdfmake a pdf of a manual page
which commandShow full path name of command
time commandSee how long a command takes
time catStart stopwatch. Ctrl-d to stop. See also sw
dir navigation
cd -Go to previous directory
cdGo to $HOME directory
(cd dir && command)Go to dir, execute command and return to current dir
pushd .Put current dir on stack so you can popd back to it
file searching
alias l='ls -l --color=auto'quick dir listing
ls -lrtList files by date. See also newest and find_mm_yyyy
ls /usr/bin | pr -T9 -W$COLUMNSPrint in 9 columns to width of terminal
find -name '*.[ch]' | xargs grep -E 'expr'Search 'expr' in this dir and below. See also findrepo
find -type f -print0 | xargs -r0 grep -F 'example'Search all regular files for 'example' in this dir and below
find -maxdepth 1 -type f | xargs grep -F 'example'Search all regular files for 'example' in this dir
find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; doneProcess each item with multiple commands (in while loop)
find -type f ! -perm -444Find files not readable by all (useful for web site)
find -type d ! -perm -111Find dirs not accessible by all (useful for web site)
locate -r 'file[^/]*\.txt'Search cached index for names. This re is like glob *file*.txt
look referenceQuickly search (sorted) dictionary for prefix
grep --color reference /usr/share/dict/wordsHighlight occurances of regular expression in dictionary
archives and compression
gpg -c fileEncrypt file
gpg file.gpgDecrypt file
tar -c dir/ | bzip2 > dir.tar.bz2Make compressed archive of dir/
bzip2 -dc dir.tar.bz2 | tar -xExtract archive (use gzip instead of bzip2 for tar.gz files)
tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'Make encrypted archive of dir/ on remote machine
find dir/ -name '*.txt' | tar -c --files-from=- | bzip2 > dir_txt.tar.bz2Make archive of subset of dir/ and below
find dir/ -name '*.txt' | xargs cp -a --target-directory=dir_txt/ --parentsMake copy of subset of dir/ and below
(tar -c /dir/to/copy) | ( cd /where/to/ && tar -x -p )Copy (with permissions) copy/ dir to /where/to/ dir
(cd /dir/to/copy && tar -c .) | ( cd /where/to/ && tar -x -p )Copy (with permissions) contents of copy/ dir to /where/to/
(tar -c /dir/to/copy ) | ssh -C user@remote 'cd /where/to/ && tar -x -p'Copy (with permissions) copy/ dir to remote:/where/to/ dir
dd bs=1M if=/dev/sda | gzip | ssh user@remote 'dd of=sda.gz'Backup harddisk to remote machine
rsync (Network efficient file copier: Use the --dry-run option for testing)
rsync -P rsync://rsync.server.com/path/to/file fileOnly get diffs. Do multiple times for troublesome downloads
rsync --bwlimit=1000 fromfile tofileLocally copy with rate limit. It's like nice for I/O
rsync -az -e ssh --delete ~/public_html/ remote.com:'~/public_html'Mirror web site (using compression and encryption)
rsync -auz -e ssh remote:/dir/ . && rsync -auz -e ssh . remote:/dir/Synchronize current directory with remote one
ssh (Secure SHell)
ssh $USER@$HOST commandRun command on $HOST as $USER (default command=shell)
ssh -f -Y $USER@$HOSTNAME xeyesRun GUI command on $HOSTNAME as $USER
scp -p -r $USER@$HOST: file dir/Copy with permissions to $USER's home directory on $HOST
scp -c arcfour $USER@$LANHOST: bigfileUse faster crypto for local LAN. This might saturate GigE
ssh -g -L 8080:localhost:80 root@$HOSTForward connections to $HOSTNAME:8080 out to $HOST:80
ssh -R 1434:imap:143 root@$HOSTForward connections from $HOST:1434 in to imap:143
ssh-copy-id $USER@$HOSTInstall public key for $USER@$HOST for password-less log in
wget (multi purpose download tool)
(cd dir/ && wget -nd -pHEKk http://www.pixelbeat.org/cmdline.html)Store local browsable version of a page to the current dir
wget -c http://www.example.com/large.fileContinue downloading a partially downloaded file
wget -r -nd -np -l1 -A '*.jpg' http://www.example.com/dir/Download a set of files to the current directory
wget ftp://remote/file[1-9].iso/FTP supports globbing directly
wget -q -O- http://www.pixelbeat.org/timeline.html | grep 'a href' | headProcess output directly
echo 'wget url' | at 01:00Download url at 1AM to current dir
wget --limit-rate=20k urlDo a low priority download (limit to 20KB/s in this case)
wget -nv --spider --force-html -i bookmarks.htmlCheck links in a file
wget --mirror http://www.example.com/Efficiently update a local copy of a site (handy from cron)
networking (Note ifconfig, route, mii-tool, nslookup commands are obsolete)
ethtool eth0Show status of ethernet interface eth0
ethtool --change eth0 autoneg off speed 100 duplex fullManually set ethernet interface speed
iwconfig eth1Show status of wireless interface eth1
iwconfig eth1 rate 1Mb/s fixedManually set wireless interface speed
iwlist scanList wireless networks in range
ip link showList network interfaces
ip link set dev eth0 name wanRename interface eth0 to wan
ip link set dev eth0 upBring interface eth0 up (or down)
ip addr showList addresses for interfaces
ip addr add 1.2.3.4/24 brd + dev eth0Add (or del) ip and mask (255.255.255.0)
ip route showList routing table
ip route add default via 1.2.3.254Set default gateway to 1.2.3.254
host pixelbeat.orgookup DNS ip address for name or vice versaL
hostname -iLookup local ip address (equivalent to host `hostname`)
whois pixelbeat.orgLookup whois info for hostname or ip address
netstat -tuplList internet services on a system
netstat -tupList active connections to/from system
windows networking (Note samba is the package that provides all this windows specific networking support)
smbtreeFind windows machines. See also findsmb
nmblookup -A 1.2.3.4Find the windows (netbios) name associated with ip address
smbclient -L windows_boxList shares on windows machine or samba server
mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/shareMount a windows share
echo 'message' | smbclient -M windows_boxSend popup to windows machine (off by default in XP sp2)
text manipulation (Note sed uses stdin and stdout. Newer versions support inplace editing with the -i option)
sed 's/string1/string2/g'Replace string1 with string2
sed 's/\(.*\)1/\12/g'Modify anystring1 to anystring2
sed '/ *#/d; /^ *$/d'Remove comments and blank lines
sed ':a; /\\$/N; s/\\\n//; ta'Concatenate lines with trailing \
sed 's/[ \t]*$//'Remove trailing spaces from lines
sed 's/\([`"$\]\)/\\\1/g'Escape shell metacharacters active within double quotes
seq 10 | sed "s/^/      /; s/ *\(.\{7,\}\)/\1/"Right align numbers
sed -n '1000{p;q}'Print 1000th line
sed -n '10,20p;20q'Print lines 10 to 20
sed -n 's/.*<title>\(.*\)<\/title>.*/\1/ip;T;q'Extract title from HTML web page
sed -i 42d ~/.ssh/known_hostsDelete a particular line
sort -t. -k1,1n -k2,2n -k3,3n -k4,4nSort IPV4 ip addresses
echo 'Test' | tr '[:lower:]' '[:upper:]'Case conversion
tr -dc '[:print:]' < /dev/urandomFilter non printable characters
tr -s '[:blank:]' '\t' </proc/diskstats | cut -f4cut fields separated by blanks
history | wc -lCount lines
set operations (Note you can export LANG=C for speed. Also these assume no duplicate lines within a file)
sort file1 file2 | uniqUnion of unsorted files
sort file1 file2 | uniq -dIntersection of unsorted files
sort file1 file1 file2 | uniq -uDifference of unsorted files
sort file1 file2 | uniq -uSymmetric Difference of unsorted files
join -t'\0' -a1 -a2 file1 file2Union of sorted files
join -t'\0' file1 file2Intersection of sorted files
join -t'\0' -v2 file1 file2Difference of sorted files
join -t'\0' -v1 -v2 file1 file2Symmetric Difference of sorted files
math
echo '(1 + sqrt(5))/2' | bc -lQuick math (Calculate φ). See also bc
seq -f '4/%g' 1 2 99999 | paste -sd-+ | bc -lCalculate π the unix way
echo 'pad=20; min=64; (100*10^6)/((pad+min)*8)' | bcMore complex (int) e.g. This shows max FastE packet rate
echo 'pad=20; min=64; print (100E6)/((pad+min)*8)' | pythonPython handles scientific notation
echo 'pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)' | gnuplot -persistPlot FastE packet rate vs packet size
echo 'obase=16; ibase=10; 64206' | bcBase conversion (decimal to hexadecimal)
echo $((0x2dec))Base conversion (hex to dec) ((shell arithmetic expansion))
units -t '100m/9.58s' 'miles/hour'Unit conversion (metric to imperial)
units -t '500GB' 'GiB'Unit conversion (SI to IEC prefixes)
units -t '1 googol'Definition lookup
seq 100 | (tr '\n' +; echo 0) | bcAdd a column of numbers. See also add and funcpy
calendar
cal -3Display a calendar
cal 9 1752Display a calendar for a particular month year
date -d friWhat date is it this friday. See also day
[ $(date -d '12:00 +1 day' +%d) = '01' ] || exitexit a script unless it's the last day of the month
date --date='25 Dec' +%AWhat day does xmas fall on, this year
date --date='@2147483647'Convert seconds since the epoch (1970-01-01 UTC) to date
TZ='America/Los_Angeles' dateWhat time is it on west coast of US (use tzselect to find TZ)
date --date='TZ="America/Los_Angeles" 09:00 next Fri'What's the local time for 9AM next Friday on west coast US
locales
printf "%'d\n" 1234Print number with thousands grouping appropriate to locale
BLOCK_SIZE=\'1 ls -lUse locale thousands grouping in ls. See also l
echo "I live in `locale territory`"Extract info from locale database
LANG=en_IE.utf8 locale int_prefixLookup locale info for specific country. See also ccodes
locale -kc $(locale | sed -n 's/\(LC_.\{4,\}\)=.*/\1/p') | lessList fields available in locale database
recode (Obsoletes iconv, dos2unix, unix2dos)
recode -l | lessShow available conversions (aliases on each line)
recode windows-1252.. file_to_change.txtWindows "ansi" to local charset (auto does CRLF conversion)
recode utf-8/CRLF.. file_to_change.txtWindows utf8 to local charset
recode iso-8859-15..utf8 file_to_change.txtLatin9 (western europe) to utf8
recode ../b64 < file.txt > file.b64Base64 encode
recode /qp.. < file.qp > file.txtQuoted printable decode
recode ..HTML < file.txt > file.htmlText to HTML
recode -lf windows-1252 | grep euroLookup table of characters
echo -n 0x80 | recode latin-9/x1..dumpShow what a code represents in latin-9 charmap
echo -n 0x20AC | recode ucs-2/x2..latin-9/xShow latin-9 encoding
echo -n 0x20AC | recode ucs-2/x2..utf-8/xShow utf-8 encoding
CDs
gzip < /dev/cdrom > cdrom.iso.gzSave copy of data cdrom
mkisofs -V LABEL -r dir | gzip > cdrom.iso.gzCreate cdrom image from contents of dir
mount -o loop cdrom.iso /mnt/dirMount the cdrom image at /mnt/dir (read only)
cdrecord -v dev=/dev/cdrom blank=fastClear a CDRW
gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom -Burn cdrom image (use dev=ATAPI -scanbus to confirm dev)
cdparanoia -BRip audio tracks from CD to wav files in current dir
cdrecord -v dev=/dev/cdrom -audio -pad *.wavMake audio CD from all wavs in current dir (see also cdrdao)
oggenc --tracknum='track' track.cdda.wav -o 'track.ogg'Make ogg file from wav file
disk space (See also FSlint)
ls -lSrShow files by size, biggest last
du -s * | sort -k1,1rn | headShow top disk users in current dir. See also dutop
du -hs /home/* | sort -k1,1hSort paths by easy to interpret disk usage
df -hShow free space on mounted filesystems
df -iShow free inodes on mounted filesystems
fdisk -lShow disks partitions sizes and types (run as root)
rpm -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1,1nList all packages by installed size (Bytes) on rpm distros
dpkg-query -W -f='${Installed-Size;10}\t${Package}\n' | sort -k1,1nList all packages by installed size (KBytes) on deb distros
dd bs=1 seek=2TB if=/dev/null of=ext3.testCreate a large test file (taking no space). See also truncate
> filetruncate data of file or create an empty file
monitoring/debugging
tail -f /var/log/messagesMonitor messages in a log file
strace -c ls >/dev/nullSummarise/profile system calls made by command
strace -f -e open ls >/dev/nullList system calls made by command
strace -f -e trace=write -e write=1,2 ls >/dev/nullMonitor what's written to stdout and stderr
ltrace -f -e getenv ls >/dev/nullList library calls made by command
lsof -p $$List paths that process id has open
lsof ~List processes that have specified path open
tcpdump not port 22Show network traffic except ssh. See also tcpdump_not_me
ps -e -o pid,args --forestList processes in a hierarchy
ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'List processes by % cpu usage
ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNSList processes by mem (KB) usage. See also ps_mem.py
ps -C firefox-bin -L -o pid,tid,pcpu,stateList all threads for a particular process
ps -p 1,$$ -o etime=List elapsed wall time for particular process IDs
last rebootShow system reboot history
free -mShow amount of (remaining) RAM (-m displays in MB)
watch -n.1 'cat /proc/interrupts'Watch changeable data continuously
udevadm monitorMonitor udev events to help configure rules
system information (see also sysinfo) ('#' means root access is required)
uname -aShow kernel version and system architecture
head -n1 /etc/issueShow name and version of distribution
cat /proc/partitionsShow all partitions registered on the system
grep MemTotal /proc/meminfoShow RAM total seen by the system
grep "model name" /proc/cpuinfoShow CPU(s) info
lspci -tvShow PCI info
lsusb -tvShow USB info
mount | column -tList mounted filesystems on the system (and align output)
grep -F capacity: /proc/acpi/battery/BAT0/infoShow state of cells in laptop battery
#dmidecode -q | lessDisplay SMBIOS/DMI information
#smartctl -A /dev/sda | grep Power_On_HoursHow long has this disk (system) been powered on in total
#hdparm -i /dev/sdaShow info about disk sda
#hdparm -tT /dev/sdaDo a read speed test on disk sda
#badblocks -s /dev/sdaTest for unreadable blocks on disk sda
interactive (see also linux keyboard shortcuts)
readlineLine editor used by bash, python, bc, gnuplot, ...
screenVirtual terminals with detach capability, ...
mcPowerful file manager that can browse rpm, tar, ftp, ssh, ...
gnuplotInteractive/scriptable graphing
linksWeb browser
xdg-open .open a file or url with the registered desktop application
© Jan 7 2008   [Comments] | [Add link to ...] |

Linux系统信息查看命令大全


最近看了一些Linux命令行的文章,在系统信息查看方面学到不少命令。发现这些系统信息查看命令也可以总结出一篇小小的东西来了。

另外这里还有非常多的命令, 可以作为参考。


系统
# uname -a               # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue   # 查看操作系统版本
# cat /proc/cpuinfo      # 查看CPU信息
# hostname               # 查看计算机名
# lspci -tv              # 列出所有PCI设备
# lsusb -tv              # 列出所有USB设备
# lsmod                  # 列出加载的内核模块
# env                    # 查看环境变量
资源
# free -m                # 查看内存使用量和交换区使用量
# df -h                  # 查看各分区使用情况
# du -sh <目录名>        # 查看指定目录的大小
# grep MemTotal /proc/meminfo   # 查看内存总量
# grep MemFree /proc/meminfo    # 查看空闲内存量
# uptime                 # 查看系统运行时间、用户数、负载
# cat /proc/loadavg      # 查看系统负载
磁盘和分区
# mount | column -t      # 查看挂接的分区状态
# fdisk -l               # 查看所有分区
# swapon -s              # 查看所有交换分区
# hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE       # 查看启动时IDE设备检测状况
网络
# ifconfig               # 查看所有网络接口的属性
# iptables -L            # 查看防火墙设置
# route -n               # 查看路由表
# netstat -lntp          # 查看所有监听端口
# netstat -antp          # 查看所有已经建立的连接
# netstat -s             # 查看网络统计信息
进程
# ps -ef                 # 查看所有进程
# top                    # 实时显示进程状态
用户
# w                      # 查看活动用户
# id <用户名>            # 查看指定用户信息
# last                   # 查看用户登录日志
# cut -d: -f1 /etc/passwd   # 查看系统所有用户
# cut -d: -f1 /etc/group    # 查看系统所有组
# crontab -l             # 查看当前用户的计划任务
服务
# chkconfig --list       # 列出所有系统服务
# chkconfig --list | grep on    # 列出所有启动的系统服务
程序
# rpm -qa                # 查看所有安装的软件包

附加一张总结的很好Linux常用命定的图片:
Linux 文件结构大全

❌