2021年8月

如何找到一个程序的进程 ID(PID)。最常见的 Linux 工具是由 procps-ng 包提供的,包括 pspstreepidofpgrep 命令。

 title=

POSIX 术语中, 进程 process 是一个正在进行的事件,由操作系统的内核管理。当你启动一个应用时就会产生一个进程,尽管还有许多其他的进程在你的计算机后台运行,包括保持系统时间准确的程序、监测新的文件系统、索引文件,等等。

大多数操作系统都有某种类型的系统活动监视器,因此你可以了解在任何特定时刻有哪些进程在运行。Linux 有一些供你选择,包括 GNOME 系统监视器和 KSysGuard。这两个软件在桌面环境都很有用,但 Linux 也提供了在终端监控系统的能力。不管你选择哪一种,对于那些积极管理自己电脑的人来说,检查一个特定的进程是一项常见的任务。

在这篇文章中,我演示了如何找到一个程序的进程 ID(PID)。最常见的工具是由 procps-ng 包提供的,包括 pspstreepidofpgrep 命令。

查找一个正在运行的程序的 PID

有时你想得到一个你知道正在运行的特定程序的进程 ID(PID)。pidofpgrep 命令可以通过命令名称查找进程。

pidof 命令返回一个命令的 PID,它按名称搜索确切的命令:

$ pidof bash
1776 5736

pgrep 命令允许使用正则表达式:

$ pgrep .sh
1605
1679
1688
1776
2333
5736
$ pgrep bash
5736

通过文件查找 PID

你可以用 fuser 命令找到使用特定文件的进程的 PID。

$ fuser --user ~/example.txt          
/home/tux/example.txt: 3234(tux)

通过 PID 获得进程名称

如果你有一个进程的 PID 编号,但没有生成它的命令,你可以用 ps 做一个“反向查找”:

$ ps 3234
PID TTY   STAT  TIME COMMAND
5736 pts/1  Ss   0:00 emacs

列出所有进程

ps 命令列出进程。你可以用 -e 选项列出你系统上的每一个进程:

PID TTY          TIME CMD
  1 ?         00:00:03 systemd
  2 ?         00:00:00 kthreadd
  3 ?         00:00:00 rcu_gp
  4 ?         00:00:00 rcu_par_gp
  6 ?         00:00:00 kworker/0:0H-events_highpri
[...]
5648 ?        00:00:00 gnome-control-c
5656 ?        00:00:00 gnome-terminal-
5736 pts/1    00:00:00 bash
5791 pts/1    00:00:00 ps
5792 pts/1    00:00:00 less
(END)

只列出你的进程

ps -e 的输出可能会让人不知所措,所以使用 -U 来查看一个用户的进程:

$ ps -U tux | less
 PID TTY          TIME CMD
3545 ?        00:00:00 systemd
3548 ?        00:00:00 (sd-pam)
3566 ?        00:00:18 pulseaudio
3570 ?        00:00:00 gnome-keyring-d
3583 ?        00:00:00 dbus-daemon
3589 tty2     00:00:00 gdm-wayland-ses
3592 tty2     00:00:00 gnome-session-b
3613 ?        00:00:00 gvfsd
3618 ?        00:00:00 gvfsd-fuse
3665 tty2     00:01:03 gnome-shell
[...]

这样就减少了 200 个(可能是 100 个,取决于你运行的系统)需要分类的进程。

你可以用 pstree 命令以不同的格式查看同样的输出:

$ pstree -U tux -u --show-pids
[...]
├─gvfsd-metadata(3921)─┬─{gvfsd-metadata}(3923)
│           └─{gvfsd-metadata}(3924)
├─ibus-portal(3836)─┬─{ibus-portal}(3840)
│          └─{ibus-portal}(3842)
├─obexd(5214)
├─pulseaudio(3566)─┬─{pulseaudio}(3640)
│         ├─{pulseaudio}(3649)
│         └─{pulseaudio}(5258)
├─tracker-store(4150)─┬─{tracker-store}(4153)
│           ├─{tracker-store}(4154)
│           ├─{tracker-store}(4157)
│           └─{tracker-store}(4178)
└─xdg-permission-(3847)─┬─{xdg-permission-}(3848)
            └─{xdg-permission-}(3850)

列出进程的上下文

你可以用 -u 选项查看你拥有的所有进程的额外上下文。

$ ps -U tux -u
USER  PID %CPU %MEM    VSZ   RSS TTY STAT START  TIME COMMAND
tux  3545  0.0  0.0  89656  9708 ?   Ss   13:59  0:00 /usr/lib/systemd/systemd --user
tux  3548  0.0  0.0 171416  5288 ?   S    13:59  0:00 (sd-pam)
tux  3566  0.9  0.1 1722212 17352 ?  S<sl 13:59  0:29 /usr/bin/pulseaudio [...]
tux  3570  0.0  0.0 664736  8036 ?   SLl  13:59  0:00 /usr/bin/gnome-keyring-daemon [...]
[...]
tux  5736  0.0  0.0 235628  6036 pts/1 Ss 14:18  0:00 bash
tux  6227  0.0  0.4 2816872 74512 tty2 Sl+14:30  0:00 /opt/firefox/firefox-bin [...]
tux  6660  0.0  0.0 268524  3996 pts/1 R+ 14:50  0:00 ps -U tux -u
tux  6661  0.0  0.0 219468  2460 pts/1 S+ 14:50  0:00 less

用 PID 排除故障

如果你在某个特定的程序上有问题,或者你只是好奇某个程序在你的系统上还使用了什么资源,你可以用 pmap 查看运行中的进程的内存图。

$ pmap 1776
5736:   bash
000055f9060ec000   1056K r-x-- bash
000055f9063f3000     16K r---- bash
000055f906400000     40K rw---   [ anon ]
00007faf0fa67000   9040K r--s- passwd
00007faf1033b000     40K r-x-- libnss_sss.so.2
00007faf10345000   2044K ----- libnss_sss.so.2
00007faf10545000      4K rw--- libnss_sss.so.2
00007faf10546000 212692K r---- locale-archive
00007faf1d4fb000   1776K r-x-- libc-2.28.so
00007faf1d6b7000   2044K ----- libc-2.28.so
00007faf1d8ba000      8K rw--- libc-2.28.so
[...]

处理进程 ID

procps-ng 软件包有你需要的所有命令,以调查和监控你的系统在任何时候的使用情况。无论你是对 Linux 系统中各个分散的部分如何结合在一起感到好奇,还是要对一个错误进行调查,或者你想优化你的计算机的性能,学习这些命令都会为你了解你的操作系统提供一个重要的优势。


via: https://opensource.com/article/21/8/linux-procps-ng

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Windows XP 问世 20 年

微软的 Windows 系统有过很多经典,对当前一代的网民来说,Windows XP 系统可能是最难忘的,国内很多人触网都在 Windows XP。Windows XP 于 2001 年 2 月 5 日公布,10 月 25 日正式上市。Windows XP 在 2002 年到 2008 年之间发布了三个 SP3 服务包,最终在 2009 年结束了主流支持,扩展支持结束于 2014 年。据 Statcounter 的数据显示,它依然有 0.59% 的份额,比 Vista 的 0.26% 依然高出一倍多。

虽然 Windows XP 很经典,不过给我印象最深刻的是 Windows 95。

谷歌市场上有 120 多款恶意加密货币应用

这些应用程序旨在误导无辜和毫无戒心的用户将它们安装到自己的智能手机上。这些应用程序采用了通常的“快速致富”骗局,吸引用户投资于“云挖矿服务”并获得利润。趋势科技称,“尽管这些软件与云挖矿操作无关,也没有任何的加密货币挖矿特性,其中的一些应用程序提示用户付款,以增加挖矿能力。”除了谷歌已经禁止的 8 款恶意加密货币应用外,趋势科技称,目前市场上还有120多个假加密货币挖矿应用,这些应用程序在去年影响了 4500 多名用户。

贪婪就是原罪。

印度的 IPv6 采用率最高

根据谷歌用户数据的分析,印度以 61.67% 的采用率领先全球。马来西亚和法属圭亚那分别位列第二和第三。第四是法国(48.38%),第五是中国台湾(48.0%)。美国排在第六位(47.5%)。由于众所周知的原因,这个报告里中国大陆的数据很低,并不能反映中国实际的 IPv6 采用率。

不管你喜欢不喜欢,IPv6 都已经用的越来越多了。

未来取代安卓或 iOS 的可能是 Linux 手机,但如今,有哪些选择可以尝试一下呢?

虽然安卓是基于 Linux 内核的,但它经过了大量修改。因此,这意味着它不是一个完全意义上的基于 Linux 的操作系统。

谷歌正在努力使安卓内核更接近主线 Linux 内核,但这仍然是一个遥远的梦想。

那么,在这种情况下,如果你正在寻找一款 Linux 手机、一款由 Linux 操作系统驱动的智能手机,有哪些可以选择呢?

这并不是一个容易做出的决定,因为你的选择非常有限。因此,我试图推荐一些最好的、不同于主流选择的 Linux 手机。

如今你可以使用的顶级 Linux 手机

值得注意的是,这里提到的 Linux 手机或许无法取代你的安卓或 iOS 设备。因此,在做出购买决定之前,请确保你做了一些背景研究。

注意: 你需要仔细检查这些 Linux 手机是否可以购买到、预期的发货日期和使用风险。它们大多数只适合于发烧友或早期试用者。

1、PinePhone

PinePhone 是最有性价比和最受欢迎的选择之一,我觉得它是一个有前途的 Linux 手机。

它并不局限于单一的操作系统。你可以尝试使用带有 Plasma mobile OS 的 Manjaro、UBports、Sailfish OS 等系统。PinePhone 的配置不错,它包括一个四核处理器和 2G 或3G 的内存。它支持使用可启动的 microSD 卡来帮助你安装系统,还可选 16/32GB eMMC 存储。

其显示屏是一个基本的 1440×720p IPS 屏幕。你还可以得到特殊的隐私保护,如蓝牙、麦克风和摄像头的断路开关。

PinePhone 还为你提供了使用六个可用的 pogo 引脚添加自定义的硬件扩展的方式。

其基本版(2GB 内存和 16GB 存储)默认加载了 Manjaro,价格为 149 美元;而融合版(3GB 内存和 32GB 存储)价格为 199 美元。

2、Fairphone

与这个清单上的其他选择相比,Fairphone 在商业上是成功的。它不是一款 Linux 智能手机,但它具有定制版的安卓系统,即 Fairphone OS,并且可以选择 开源安卓系统替代品 之一 /e/ OS。如果你想使用 Linux 操作系统,也有一些社区移植版本,但可能有点碰运气。

Fairphone 有两个不同的版本,提供了一些不错的配置规格。你会发现 Fairphone 3+ 有一个 4800 万像素的相机传感器和一个全高清显示屏。另外,你还会发现先进的高通处理器为该设备提供了动力。

他们专注于制造可持续发展的智能手机,并使用了一定量的回收塑料制造。这也为了方便维修。

因此,它不仅是一个非主流智能手机的选择,而且如果你选择了它,你也将为保护环境出了力。

3、Librem 5

Librem 5 是一款非常注重用户隐私的智能手机,同时它采用了开源的操作系统,即 PureOS,并非基于安卓。

它所提供的配置规格还不错,有 3GB 内存和四核 Cortex A53 芯片组。但是,这无法与主流选择相竞争。因此,你可能不会觉得它物美价廉。

它的目标是那些对尊重隐私的智能手机感兴趣的发烧友。

与其他产品类似,Librem 5 也专注于通过提供用户可更换的电池使手机易于维修。

在隐私方面,你会注意到有蓝牙、相机和麦克风的断路开关。他们还承诺了未来几年的安全更新。

4、Pro 1X

Pro 1X 是一款有趣的智能手机,同时支持 Ubuntu Touch、Lineage OS 和安卓。

它不仅是一款 Linux 智能手机,而且是一款带有独立 QWERTY 键盘的手机,这在现在是很罕见的。

Pro 1 X 的配置规格不错,包括了一个骁龙 662 处理器和 6GB 内存。它还带有一块不错的 AMOLED 全高清显示屏。

它的相机不是特别强大,但在大多数情况下应该是足够了。

5、Volla Phone

Volla Phone 是一个有吸引力的产品,运行在 UBports 的 Ubuntu Touch。

它配备了预制的 “虚拟专用网络” ,并专注于简化用户体验。它的操作系统是定制的,因此,可以快速访问所有重要的东西,而无需自己组织。

它的配置规格令人印象深刻,包括了一个八核联发科处理器和 4700 毫安时的电池。你会得到类似于一些最新的智能手机上的设计。

总结

Linux 智能手机不是到处都能买到的,当然也还不适合大众使用。

因此,如果你是一个发烧友,或者想支持这种手机的发展,你可以考虑购买一台。

你已经拥有一台这种智能手机了吗?请不要犹豫,在下面的评论中分享你的经验。


via: https://itsfoss.com/linux-phones/

作者:Ankush Das 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

at 命令是一种在特定时间和日期安排一次性任务的 Linux 终端方法。

 title=

计算机擅长 自动化,但不是每个人都知道如何使自动化工作。不过,能够在特定的时间为电脑安排一个任务,然后忘记它,这确实是一种享受。也许你有一个文件要在特定的时间上传或下载,或者你需要处理一批还不存在但可以保证在某个时间存在的文件,或者需要监控设置,或者你只是需要一个友好的提醒,在下班回家的路上买上面包和黄油。

这就是 at 命令的用处。

什么是 Linux at 命令?

at 命令是在 Linux 终端让你在特定时间和日期安排一次性工作的方法。它是一种自发的自动化,在终端上很容易实现。

安装 at

在 Linux 上,at 命令可能已经安装了。你可以使用 at -V 命令来验证它是否已经安装。只要返回一个版本号,就说明你已经安装了 at

$ at -V
at version x.y.z

如果你试图使用 at,但没有找到该命令,大多数现代的 Linux 发行版会为你提供缺少的 at 软件包。

你可能还需要启动 at 守护程序,称为 atd。在大多数 Linux 系统中,你可以使用 systemctl 命令来启用该服务,并将它们设置为从现在开始自动启动:

$ sudo systemctl enable --now atd

用 at 交互式地安排一个作业

当你使用 at 命令并加上你希望任务运行的时间,会打开一个交互式 at 提示符。你可以输入你想在指定时间运行的命令。

做个比喻,你可以把这个过程看作是一个日历应用,就像你在你的手机上使用的那样。首先,你在某一天的某个时间创建一个事件,然后指定你想要发生什么。

例如,可以试试创建一个未来几分钟的任务,来给自己计划一个备忘录。这里运行一个简单的任务,以减少失败的可能性。要退出 at 提示符,请按键盘上的 Ctrl+D

$ at 11:20 AM
warning: commands will be executed using /bin/sh
at> echo "hello world" > ~/at-test.txt
at> <EOT>
job 3 at Mon Jul 26 11:20:00 2021

正如你所看到的,at 使用直观和自然的时间定义。你不需要用 24 小时制的时钟,也不需要把时间翻译成 UTC 或特定的 ISO 格式。一般来说,你可以使用你自然想到的任何符号,如 noon1:30 PM13:37 等等,来描述你希望一个任务发生的时间。

等待几分钟,然后在你创建的文件上运行 cat 或者 tac 命令,验证你的任务是否已经运行:

$ cat ~/at-test.txt
hello world

用 at 安排一个任务

你不必使用 at 交互式提示符来安排任务。你可以使用 echoprintf 向它传送命令。在这个例子中,我使用了 now 符号,以及我希望任务从现在开始延迟多少分钟:

$ echo "echo 'hello again' >> ~/at-test.txt" | at now +1 minute

一分钟后,验证新的命令是否已被执行:

$ cat ~/at-test.txt
hello world
hello again

时间表达式

at 命令在解释时间时是非常宽容的。你可以在许多格式中选择,这取决于哪一种对你来说最方便:

  • YYMMDDhhmm[.ss](两位的年份、月、日、小时、分钟,及可选的秒)
  • CCYYMMDDhhmm[.ss](四位的年份、月、日、时、分钟,及可选的秒)
  • now(现在)
  • midnight(午夜 00:00)
  • noon(中午 12:00)
  • teatime(下午 16 点)
  • AM(上午)
  • PM(下午)

时间和日期可以是绝对时间,也可以加一个加号(+),使其与 now 相对。当指定相对时间时,你可以使用你可能用过的词语:

  • minutes(分钟)
  • hours(小时)
  • days(天)
  • weeks(星期)
  • months(月)
  • years(年)

时间和日期语法

at 命令对时间的输入相比日期不那么宽容。时间必须放在第一位,接着是日期,尽管日期默认为当前日期,并且只有在为未来某天安排任务时才需要。

这些是一些有效表达式的例子:

$ echo "rsync -av /home/tux me@myserver:/home/tux/" | at 3:30 AM tomorrow
$ echo "/opt/batch.sh ~/Pictures" | at 3:30 AM 08/01/2022
$ echo "echo hello" | at now + 3 days

查看你的 at 队列

当你爱上了 at,并且正在安排任务,而不是在桌子上的废纸上乱写乱画,你可能想查看一下你是否有任务还在队列中。

要查看你的 at 队列,使用 atq 命令:

$ atq
10 Thu Jul 29 12:19:00 2021 a tux
9 Tue Jul 27 03:30:00 2021 a tux
7 Tue Jul 27 00:00:00 2021 a tux

要从队列中删除一个任务,使用 atrm 命令和任务号。例如,要删除任务 7:

$ atrm 7
$ atq
10 Thu Jul 29 12:19:00 2021 a tux
9 Tue Jul 27 03:30:00 2021 a tux

要看一个计划中的任务的实际内容,你需要查看 /var/spool/at 下的内容。只有 root 用户可以查看该目录的内容,所以你必须使用 sudo 来查看或 cat 任何任务的内容。

用 Linux at 安排任务

at 系统是一个很好的方法,可以避免忘记在一天中晚些时候运行一个作业,或者在你离开时让你的计算机为你运行一个作业。与 cron 不同的是,它不像 cron 那样要求任务必须从现在起一直按计划运行到永远,因此它的语法比 cron 简单得多。

等下次你有一个希望你的计算机记住并管理它的小任务,试试 at 命令。


via: https://opensource.com/article/21/8/linux-at-command

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

比特币 BSV 矿工在区块链上挖出 2GB 的区块

比特币协会本周确认,在比特币分叉链 BSV 上挖出了一个 2GB 大小的区块。这是迄今为止在公链上挖出的最大区块。700606 区块记录于 2021 年 8 月 16 日,包含了 5,869 个交易。挖出这个区块的矿工除了得到固定的 6.25 BSV 奖励之外,还得到了约 10 BSV 的手续费,平均每笔交易付出 0.28 美元手续费。今年 8 月的前几天,BSV 上还挖出过 5 个超过 1GB 的区块。BSV 官方人员说,“在 BTC 网络上,经过多年的比特币扩容之战,仍然被限制在每秒可处理 7 笔交易的 1MB 区块上,毫无进展。”

虽然我对区块扩容持谨慎态度,但是似乎 BSV 的这些尝试还不错。

苹果专利使 W3C 的开放屏幕协议复杂化

W3C 一直研究的“开放屏幕协议”是为了制定一个 Web 标准,使网页能够驱动第二屏幕来显示网页内容。通过该协议,可以让网页内容/网站与第二屏幕互动,如控制连接互联网的电视、HDMI 加密狗、智能扬声器和其他连接互联网的第二设备。不幸的是,这些努力现在被苹果的一些专利所阻挠。W3C 将尝试解决这些问题,或以其他方式建议工作组考虑重新设计受专利要求影响的部分,甚至终止/撤销规范的工作。

不知道苹果是否会乐意将这些专利释放来支持开放标准。

美国一小镇要给居民每人价值 1000 美元的比特币

美国一个人口只有 1500 人的小镇镇长正在筹集资金,向 1500 名居民每人提供价值 1000 美元比特币。但得到的比特币是不能使用,须持有五年后才能使用。他认为这些比特币可以改善每一个居民的生活,只要能保存几年。自 2009 年首次推出以来,比特币增长了 4500 倍。而且增长轨迹并没有真正意义上的放缓。根据目前的预测,这些给居民的比特币可能在几年内上涨至数万美元。

这是一个有趣的尝试,或许时间可以证明一切。

一致性可以避免当你有多个开发人员开发同一个项目时出现问题。

 title=

当你有多个不同开发环境的开发人员在一个项目上工作时,编码和测试的不一致性是一种风险。Visual Studio Code(VS Code)是一个集成开发环境(IDE),可以帮助减少这些问题。它可以和容器结合起来,为每个应用程序提供独立的开发环境,同时提供一个一致的开发环境。

VS Code 的 “Remote - Containers” 扩展 使你能够创建一个容器定义,使用该定义来构建一个容器,并在容器内进行开发。这个容器定义可以和应用程序代码一起被签入到源代码库中,这使得所有的开发人员可以使用相同的定义在容器中进行构建和开发。

默认情况下,“Remote - Containers” 扩展使用 Docker 来构建和运行容器,但使用 Podman 的容器运行环境环境也很容易,它可以让你使用 免 root 容器

本文将带领你完成设置,通过 Podman 在免 root 容器内使用 VS Code 和 “Remote - Containers” 扩展进行开发。

初始配置

在继续之前,请确保你的红帽企业 Linux(RHEL)或 Fedora 工作站已经更新了最新的补丁,并且安装了 VS Code 和 “Remote - Containers” 扩展。(参见 VS Code 网站了解更多安装信息)

接下来,用一个简单的 dnf install 命令来安装 Podman 和它的支持包:

$ sudo dnf install -y podman

安装完 Podman 后,配置 VS Code 以使用 Podman 的可执行文件(而不是 Docker)与容器进行交互。在 VS Code 中,导航到 “文件 > 首选项 > 设置”,点击 “扩展” 旁边的 “>” 图标。在出现的下拉菜单中,选择 “Remote - Containers”,并向下滚动找到 “Remote - Containers: Docker Path” 选项。在文本框中,用 “podman” 替换 “docker”。

 title=

现在配置已经完成,在 VS Code 中为该项目创建一个新的文件夹或打开现有的文件夹。

定义容器

本教程以创建 Python 3 开发的容器为例。

“Remote - Containers” 扩展可以在项目文件夹中添加必要的基本配置文件。要添加这些文件,通过在键盘上输入 Ctrl+Shift+P 打开命令面板,搜索 “Remote-Containers: Add Development Container Configuration Files”,并选择它。

 title=

在接下来的弹出窗口中,定义你想设置的开发环境的类型。对于这个例子的配置,搜索 “Python 3” 定义并选择它。

 title=

接下来,选择将在容器中使用的 Python 的版本。选择 “3 (default)” 选项以使用最新的版本。

 title= option")

Python 配置也可以安装 Node.js,但在这个例子中,取消勾选 “Install Node.js”,然后点击 “OK”。

 title=

它将创建一个 .devcontainer 文件夹,包含文件devcontainer.jsonDockerfile。VS Code 会自动打开devcontainer.json 文件,这样你就可以对它进行自定义。

启用免 root 容器

除了明显的安全优势外,以免 root 方式运行容器的另一个原因是,在项目文件夹中创建的所有文件将由容器外的正确用户 ID(UID)拥有。要将开发容器作为免 root 容器运行,请修改 devcontainer.json 文件,在它的末尾添加以下几行:

"workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,Z",
"workspaceFolder": "/workspace",

"runArgs": ["--userns=keep-id"],
"containerUser": "vscode"

这些选项告诉 VS Code 用适当的 SELinux 上下文挂载工作区,创建一个用户命名空间,将你的 UID 和 GID 原样映射到容器内,并在容器内使用 vscode 作为你的用户名。devcontainer.json 文件应该是这样的(别忘了行末的逗号,如图所示):

 title=

现在你已经设置好了容器的配置,你可以构建容器并打开里面的工作空间。重新打开命令调板(用 Ctrl+Shift+P),并搜索 “Remote-Containers: Rebuild and Reopen in Container”。点击它,VS Code 将开始构建容器。现在是休息一下的好时机(拿上你最喜欢的饮料),因为构建容器可能需要几分钟时间:

 title=

一旦容器构建完成,项目将在容器内打开。在容器内创建或编辑的文件将反映在容器外的文件系统中,并对这些文件应用适当的用户权限。现在,你可以在容器内进行开发了。VS Code 甚至可以把你的 SSH 密钥和 Git 配置带入容器中,这样提交代码就会像在容器外编辑时那样工作。

接下来的步骤

现在你已经完成了基本的设置和配置,你可以进一步加强配置的实用性。比如说:

  • 修改 Dockerfile 以安装额外的软件(例如,所需的 Python 模块)。
  • 使用一个定制的容器镜像。例如,如果你正在进行 Ansible 开发,你可以使用 Quay.ioAnsible Toolset。(确保通过 Dockerfile 将 vscode 用户添加到容器镜像中)
  • .devcontainer 目录下的文件提交到源代码库,以便其他开发者可以利用容器的定义进行开发工作。

在容器内开发有助于防止不同项目之间的冲突,因为隔离了不同项目的依赖关系及代码。你可以使用 Podman 在免 root 环境下运行容器,从而提高安全性。通过结合 VS Code、“Remote - Containers” 扩展和 Podman,你可以轻松地为多个开发人员建立一个一致的环境,减少设置时间,并以安全的方式减少开发环境的差异带来的错误。


via: https://opensource.com/article/21/7/vs-code-remote-containers-podman

作者:Brant Evans 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出