首发于 闲欢

在线运行 Linux,强的离谱!

作者:JackTian 原文: 在线运行 Linux,强的离谱!

对于 Linux 初学者来说,当接触 Linux 操作系统时,可通过虚拟机、云主机或企业服务器的环境学习 Linux,有朋友可能会问了,那有没有无需安装即可运行的操作系统呢?

正好,我最近发现了一个非常不错的网站 —— DistroTest

1、DistroTest

这个网站可以让你免费使用在线版的 Linux 和 Unix 操作系统,无需在本地进行安装。

你只需找到自己需要的操作系统版本即可在线进行测试,而且操作系统没任何限制,可使用系统的所有功能,包括卸载安装软件、测试安装程序、甚至删除或格式化硬盘、删除系统文件等;

我这里试用的是 Archlinux ,点击 start 按钮即可启动所选的操作系统。

此在线版操作系统将会在新浏览器窗口中进行启动,当弹出如下界面时,会有一些提示,例如:停止系统、重置系统、root 用户密码和普通用户密码。点击 Open VNC-Viewer(allow POP-UPs!) 按钮即可进入到系统登录界面。

这里可以通过内建的 noVNC viewer 访问,但需要在浏览器中启用 / 允许 DistroTest 网站的弹出窗口,否则将无法看到弹出的 noVNC 窗口。

如果你不想启用 DistroTest 页面的弹出窗口,可在本地系统安装任意 VNC 客户端,VNC 登录信息同样也是可以在同一页面中找到的。

这样最终就进入到 Arch Linux 在线版的操作系统了。

若每次关机后,系统将会恢复到默认配置,当试用结束后,回到 DistroTest 页面将会停止试用的操作系统。

DistroTest 地址: distrotest.net/

据 2021.12.29 官方统计数据显示,DistroTest 提供了 373 种操作系统的 762 个版本。

讲真,这么多年我所接触的 Linux,但在这个网站里所列出的有一些从未听说过的发行版,甚至都不知道 Linux 操作系统原来有如此之多的版本。

除此之外,也包括部分非 Linux 的操作系统,比如:FreeBSD、FreeDOS、Gparted(磁盘分区工具)简直是刷新了我对 Linux 的认知。

2、OnWorks

OnWorks 是一个免费的托管运行 Linux Mint 在线服务器,需要在 Chrome 浏览器中安装 Linux Mint 在线服务器插件,是可以基于多种操作系统,例如:CentOS、Fedora、Ubuntu 和 Debian 等等,是一个多操作系统平台,可以从任何地方运行和测试任何类型的操作系统。简单、功能齐全、轻便且易使用。

OnWorks 地址: onworks.net/

插件下载地址:

chrome.google.com/webst

3、Webminal

Webminal 是一款免费的 GNU/Linux 在线终端和编程 IDE,为用户提供了一个独特的免费在线学习平台,可以在其中了解 Linux、练习 Linux 以及与其他 Linux 用户进行互动。

使用 Webminal,可以练习 Linux 命令、编写 Bash 脚本、创建和访问 MySQL 表、学习 Python、C、Ruby、Java、Rust 编程以及使用虚拟平台执行基本的 root 用户任务。借助“Webminal Play”功能,还可以观看视频(而不是阅读文档)并进行练习。

Webminal 的功能:

  • 在线 Linux/bash 终端,无需安装;
  • 练习 Linux 命令,包括文件系统、文件管理、在 bash/awk/sed 和 MySQL 中编写脚本;
  • 可获得 100MB 存储空间;
  • 最多可创建 1000 个文件;
  • 可以创建的最大文件大小为 1MB;
  • 可以与社区成员共享文件并让他们使用你的脚本/程序验证/调试问题等;
  • 一个进程可以打开的最大文件数为 15;
  • 最多可同时运行 10 个进程;
  • 不能登录多次,除非退出;
  • 创建属于自己的群组并在群组成员之间共享文件;

除此之外,Webminal 官方也明确指出了 MySQL 的特性,如下:

MySQL 的特性:

  • 最多可创建 4 个表;
  • 数据库大小应该小于 200KB;
  • 每小时最多可执行 200 个查询;
  • 每小时最多可执行 100 个更新查询;
  • 只能有一个 MySQL 连接;
  • 不允许访问其他用户的数据库;

Webminal 地址: webminal.org/terminal/

4、Tutorials Point Coding Ground

Tutorials Point Coding Ground 这个在线工具是开发工程师们编码、编辑、运行和共享的一个编码基础平台,它支持多语言、代码高亮、新建文件 / 项目、下载文件 / 项目、自定义设置(例如:主题颜色)、错误提示等功能。

主要包括:

  • 数据科学技术:Python 3、R、Matplotlib、NumPy、Matlab、SciPy 等;
  • 编程语言:C、C++、C#、Java、PHP、Perl、Ruby、Scala、Swift、 VB.net 等;
  • Web 开发技术:CSS、HTML、Javascript、Jquery、Typescript、VueJS 等;
  • 文件编辑器:Latex、Markdown、Tex 等;
  • 在线编译器和解释器:AWK、Bash Shell、GO、Node.JS 等;

当然了,也少不了我们在线运行 Bash Shell 的环境,我通过它写了个乘法口诀的脚本程序。

代码如下:

#!/bin/bash
# Filename:My multiplication.sh
# Date:2021/12/30
# 公众号:杰哥的IT之旅
# Name:JackTian
# WeChat:Hc220088
# Description:The multiplication formula program is in bash shell
sum=0
for ((a=1;a<=9;a++))
  for ((b=1;b<=$a;b++))
  sum=$[$a*$b]
echo -ne “$a*$b=$sum\”

输出结果:

“1*1=1”
“2*1=2”“2*2=4”
“3*1=3”“3*2=6”“3*3=9”
“4*1=4”“4*2=8”“4*3=12”“4*4=16”
“5*1=5”“5*2=10”“5*3=15”“5*4=20”“5*5=25”
“6*1=6”“6*2=12”“6*3=18”“6*4=24”“6*5=30”“6*6=36”
“7*1=7”“7*2=14”“7*3=21”“7*4=28”“7*5=35”“7*6=42”“7*7=49”
“8*1=8”“8*2=16”“8*3=24”“8*4=32”“8*5=40”“8*6=48”“8*7=56”“8*8=64”
“9*1=9”“9*2=18”“9*3=27”“9*4=36”“9*5=45”“9*6=54”“9*7=63”“9*8=72”“9*9=81”


Tutorials Point Coding Ground 地址:

tutorialspoint.com/exec

5、jsuix

JS/UIX 终端在 Web 浏览器上运行其实是与 UNIX 的操作系统非常相似,完全基于 JavaScript 编写,它包括虚拟机、Shell、虚拟文件系统、进程管理、是带有屏幕和键盘映射的终端。

点击 open terminal 即可打开终端。

该 JS/UIX 终端的键盘是接受 US-ASCII 字符集,如果你希望使用屏幕键盘来进行输入命令,可以点击终端左下角的 显示键盘 按钮来进行操作。

备用键盘映射(可能取决于系统和浏览器):

  • CTRL + SHIFT + [KEYPAD]<4> 为左
  • CTRL + SHIFT + [KEYPAD]<6> 向右
  • CTRL + SHIFT + [KEYPAD]<8> 向上
  • CTRL + SHIFT + [KEYPAD]<2> 向下
  • CTRL + SHIFT + [KEYPAD]<0> 用于退格

JS/UIX 终端是不需要任何插件来打开终端的,如果你要在 JS/UIX 终端上练习命令,可以通过 guest 访客身份 登录,无需输入密码,回车即可进行使用。

JS/UIX 地址: masswerk.at/jsuix/index

6、jslinux

jslinux 是基于 JavaScript 语言编写的 Linux 模拟器包,可以在 Web 浏览器中运行 Linux。

提供多种系统选择,你也可以在上面编译运行代码,不过整体感觉不是很流畅。

JSLinux 地址: bellard.org/jslinux/

7、Copy.sh

Copy.sh 是一个高效的在线 Linux 终端,能够仿真其他操作系统,包括:Arch Linux、FreeDOS、FreeBSD、OpenBSD、Windows 2000、Windows 98 等;

首次加载仿真器时,可以选择所需的操作系统,并根据自己的要求进行定制,同时还支持多种发行版,想体验不同操作系统的可以试试。

Copy.sh: copy.sh/v86/

8、jor1k

jor1k 是一个用运行 Linux 的 JavaScript 编写的 OpenRISC 1000 模拟器,几乎可以在任何现代 Web 浏览器中运行。

jor1k 地址: s-macke.github.io/jor1k

9、linuxcontainers

linuxcontainers 是 LXD、LXC、LXCFS 和 distrobuilder 背后的项目,目的是为 Linux 容器技术的开发提供一个发行版的环境并提供运行完整 Linux 系统的容器和虚拟机,可以运行一台演示服务器来充当运行 Linux 终端的 Shell 环境。

虽然 VM 提供了一个完整的环境,系统容器所提供的环境与 VM 的环境尽可能接近,但没有运行单独的内核和模拟所有硬件所带来的消耗。

演示服务器环境有以下限制:

  • 限时 30 分钟
  • 每个 IP 限制 4 个会话
  • 2 个共享 CPU 内核
  • 512MB 专用内存
  • 5GB 专用磁盘空间
  • 连接受限的仅 IPv6 网络连接

LXD 是下一代系统容器和虚拟机管理器,它主要是围绕在容器或虚拟机内运行的完整 Linux 系统提供统一的用户体验。

LXD 是基于映像的,并为大量 Linux 发行版提供映像。为各种用例提供了灵活性和可扩展性,支持不同的存储后端和网络类型,并且可以选择安装在从单个笔记本电脑或云实例到完整服务器机架的硬件上。

使用 LXD 时,可以使用简单的命令行工具、直接通过 REST API 或使用第三方工具集成来管理您的实例(容器和 VM)。LXD 也为本地和远程访问实现了一个 REST API。

linuxcontainers 地址:

linuxcontainers.org/lxd

10、CodeAnywhere

Codeanywhere 是一个即服务为最终用户提供跨平台的 Cloud IDE,可以在几秒钟内部署开发环境来节省时间,能够对项目进行编码、学习、构建和协作。要运行免费的 Linux 虚拟机,首先需要在网站上注册,然后订阅他们的免费计划。

注册后,继续创建新连接,并使用您选择的操作系统设置容器。完成所有这些步骤后,您将拥有一个可靠且免费的 Linux 控制台。

CodeAnywhere 地址: codeanywhere.com/

11、cocalc

cocalc 是一个不会弄乱你自己电脑的在线 Linux 终端,提供了完整的、协作的、实时同步的 Linux 命令行终端。

cocalc 的好处:

  • 不需要安装和维护任何软件;
  • 支持多人实时协作使用同一个终端;
  • 可编辑和运行 shell 脚本文件;
  • 使用终端可以与旁边的聊天功能与他人讨论相关命令;
  • 自动备份可确保您的文件安全;
  • 可以在本地桌面和在线终端之间进行复制和粘贴;

cocalc 的特征:

  • 学习 Bash 脚本;
  • 了解如何使用 Linux 命令行;
  • 运行用 Python、R、PHP、Ruby、Go、Perl、Nodejs 等编写的脚本;
  • 编译用 C/C++、Java、Rust、Assembly、Fortan、Julia、Zig、Haskell 等编写的程序;
  • 处理和存储数据文件;
  • 使用图形 X11 应用程序;

cocalc 地址: cocalc.com/features/ter

12、linuxzoo

linuxzoo 是使用具有 root 访问权限的远程私有 Linux 机器访问安全的学习 Linux。

linuxzoo 地址: linuxzoo.net/

13、jdoodle

jdoodle 是一个在线编译器和编辑器,支持 76 多种语言,具有多个版本和 2 个数据库。

同样也有专门用来练习 Shell 编程的在线环境。

jdoodle Bash shell 地址:

jdoodle.com/test-bash-s

14、 paiza.io

paiza.IO 是一个在线编辑器和编译器,可以在其中立即编写和运行代码。

支持多种语言,可以用于学习编程、抓取网站、编写批处理等;

同样也有专门用来练习 Shell 编程的在线环境。

paiza 地址:

paiza.io/projects/s0poM

15、Shellcheck

Shellcheck 是一个静态 Bash 语法检查工具,它可以在多种场景下使用,包括在线使用、命令行检查、编辑器配置。

当你在 Linux / Unix 平台下编写 Bash Shell 编译大量代码的时候,常常会花费大量的时间,然而这时你可以通过 Shellcheck 提前知道你所写脚本的语法问题,同样也会给出你相关纠错提示。

除了在线使用之外,还可以通过命令行进行检查,支持基于 Debian、Arch Linux、EPEL、Fedora、FreeBSD、MacOS、OpenSUSE、Windows 等多个操作系统上进行安装检查;

对于 Shellcheck 命令行的安装方式,可以参考 Shellcheck 的 GitHub 库。

脚本案例:

#!/bin/bash
DIRPATH='/tmp/jstack'
CURRENT_TIME=$(date +'%F'-'%H:%M:%S')
if [ ! -d "$DIRPATH" ];then
    mkdir "$DIRPATH"
    rm -rf "$DIRPATH"/*
cd "$DIRPATH"
while true
    sleep 3600
    # 这里需要将inceptor改后自己的java进程名称
    pid=$(ps -ef | grep 'inceptor' | grep -v grep | awk '{print $2}')
    jstack $pid >> "jstack_${CURRENT_TIME}"
    dir_count=$(ls | wc -l)
    if [ "$dir_count" -gt 10 ];then
       rm -f $(ls -tr | head -1)

Shellcheck 检查输出结果:

$ shellcheck myscript
Line 10:
    rm -rf "$DIRPATH"/*
           ^-- SC2115 (warning): Use "${var:?}" to ensure this never expands to /* .
Line 13:
cd "$DIRPATH"
^-- SC2164 (warning): Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
Did you mean: (apply this, apply all SC2164)
cd "$DIRPATH" || exit
Line 19:
    pid=$(ps -ef | grep 'inceptor' | grep -v grep | awk '{print $2}')
          ^-- SC2009 (info): Consider using pgrep instead of grepping ps output.
Line 20:
    jstack $pid >> "jstack_${CURRENT_TIME}"
           ^-- SC2086 (info): Double quote to prevent globbing and word splitting.
Did you mean: (apply this, apply all SC2086)
    jstack "$pid" >> "jstack_${CURRENT_TIME}"
Line 21:
    dir_count=$(ls | wc -l)
                ^-- SC2012 (info): Use find instead of ls to better handle non-alphanumeric filenames.
Line 23: