0%

alt text

1. 通过服务启动

1. 安装node-red

1
npm install -g --unsafe-perm node-red

2. node-red.service

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=node-red server
After=network.target

[Service]
Type=simple
ExecStart=/node-red
ExecStop=/bin/kill -s QUIT $MAINPID

[Install]
WantedBy=multi-user.target
1
cp node-red.service /etc/systemd/system

3. 设置服务

重新加载系统守护进程
sudo systemctl daemon-reload

启动 node-red 服务: 运行以下命令启动服务:
sudo systemctl start node-red

设置开机自启: 如果你希望在系统启动时自动启动 node-red 服务,可以使用以下命令:
sudo systemctl enable node-red

查看服务状态: 你可以通过以下命令检查服务的状态:
sudo systemctl status node-red

2. Other Linux, OSX 其他 Linux、OSX

下面的指南列出了我们认为对大多数用户来说最直接的方法。对于 Windows,PM2 不会作为服务自动运行 - 您可能更喜欢下面的 NSSM 选项

0. 使用 PM2

PM2 是 Node.js 的流程管理器。它使在启动时运行应用程序变得容易,并确保它们在必要时重新启动。

1. 安装 PM2

1
sudo npm install -g pm2

注意 :如果在 Linux 或 OS X 上以非 root 用户身份运行,则需要 sudo。如果在 Windows 上运行,则需要以管理员身份在命令 shell 中运行,而不使用 sudo 命令。

如果在 Windows 上运行,您还应该确保 tail.exe 在您的路径上,如此所述。

2. 确定 node-red 命令的确切位置

如果您已经完成了 node-red 的全局安装,那么在 Linux/OS X 上,node-red 命令可能是:/usr/bin/node-red 或 /usr/local/bin/node-red。命令 which node-red 可用于确认位置。

如果您已完成本地安装,它将是 node_modules/node-red/bin/node-red 相对于您运行 npm install 的位置。

3. PM2 运行 Node-RED

以下命令指示 PM2 运行 Node-RED,假设 /usr/bin/node-red 作为 node-red 命令的位置。

The -- argument must appear before any arguments you want to pass to node-red.
-- 参数必须出现在要传递给 node-red 的任何参数之前。

1
pm2 start /usr/bin/node-red -- -v

_注意_:如果您在 Raspberry Pi 或 BeagleBone 等设备上运行 black,则必须传递一个额外的参数:

1
pm2 start /usr/bin/node-red --node-args="--max-old-space-size=128" -- -v

_注意_:如果要以 root 用户身份运行,则必须使用 ‘–userDir’ 选项来指定 Node-RED 应存储数据的位置。

这将在后台启动 Node-RED。您可以使用以下命令查看有关进程的信息并访问日志输出:

1
2
pm2 info node-red
pm2 logs node-red

有关在 PM2 下管理进程的更多信息,请点击此处

4. PM2 在启动时运行

PM2 能够生成和配置适合其运行平台的启动脚本。

运行这些命令并按照它提供的说明进行操作:

1
2
pm2 save
pm2 startup

对于使用 systemd 的较新 Linux 系统,请使用

1
pm2 startup systemd

_临时说明:_GitHub 上的 PM2 上有一个未解决的问题,其中突出了最近引入的问题。 Linux 用户需要手动编辑生成的 /etc/init.d/pm2-init.sh 文件并将 指向正确的目录,如下所示:

1
2
# export PM2_HOME="/root/.pm2"
export PM2_HOME="/home/{youruser}/.pm2"

5. Reboot 5. 重新启动

最后,重新启动并检查一切按预期启动。

[PM2] Init System found: systemd Platform systemd Template

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target

[Service]
Type=forking
User=zauther
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/home/linuxbrew/.linuxbrew/opt/node@20/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/linuxbrew/.linuxbrew/Cellar/node@20/20.17.0/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/home/username/.pm2
PIDFile=/home/username/.pm2/pm2.pid
Restart=on-failure

ExecStart=/home/linuxbrew/.linuxbrew/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/home/linuxbrew/.linuxbrew/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/home/linuxbrew/.linuxbrew/lib/node_modules/pm2/bin/pm2 kill

[Install]
WantedBy=multi-user.target

文件位置:
/etc/systemd/system/pm2-username.service

systemctl enable pm2-username 会创建symlink /etc/systemd/system/multi-user.target.wants/pm2-username.service/etc/systemd/system/pm2-username.

通过以下方式在重启时冻结进程列表:

1
pm2 save

移除初始化脚本:

1
pm2 unstartup systemd

alt text

在 Ubuntu 中格式化磁盘,可以使用命令行工具 fdiskmkfs,或者通过图形化工具 Disks(磁盘实用工具)。下面介绍两种方法来格式化磁盘:

方法 1:使用命令行工具格式化磁盘

1.1 确认磁盘设备名称

首先,通过 lsblkfdisk -l 查看系统中的磁盘设备列表,确定要格式化的磁盘名称。

1
lsblk
Read more »

1
ffmpeg -re -stream_loop -1 -i "test.mp4" -c copy -f flv "${rtmp}"
1
ffmpeg -re -stream_loop -1 -i "test.mp4" -c copy -f flv "rtmp://xxx"

rtmp://xxx

在WSL(Windows Subsystem for Linux)下定制并编译OpenWRT的步骤如下:

1. 安装WSL和所需工具

首先,确保你已经安装了WSL和一个Linux发行版(例如Ubuntu)。

安装WSL和Ubuntu

1
wsl --install -d Ubuntu

更新系统并安装依赖

在WSL的Ubuntu环境中,更新系统并安装编译OpenWRT所需的工具:

1
2
sudo apt update && sudo apt upgrade
sudo apt install build-essential libncurses5-dev gawk git subversion libssl-dev gettext zlib1g-dev file python3

2. 下载OpenWRT源码

在你的工作目录中,克隆OpenWRT的源码:

1
2
git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt

如果你想要特定的版本,可以切换到相应的分支或tag。例如切换到22.03分支:

1
git checkout v22.03.0

3. 配置OpenWRT

在开始编译之前,你需要配置OpenWRT。你可以使用OpenWRT自带的配置界面来选择目标平台、包、内核模块等。

更新和安装feeds

1
2
./scripts/feeds update -a
./scripts/feeds install -a

使用make menuconfig配置

运行以下命令进入OpenWRT的配置界面:

1
make menuconfig
  • 在这里,你可以选择你的目标平台(Target System)和设备型号(Target Profile)。
  • 配置所需的软件包和内核模块。

4. 开始编译

配置完成后,可以开始编译。根据你的系统资源,编译可能需要一些时间。

编译整个固件

1
make -j$(nproc)

-j$(nproc) 表示使用你系统中可用的所有CPU核心来加速编译过程。

5. 解决潜在的WSL编译问题

在WSL环境中编译大型项目可能会遇到一些限制,如文件系统性能较慢或内存不足。为了应对这些问题,可以考虑:

  • 增加WSL的内存限制:可以通过编辑%userprofile%/.wslconfig文件来增加WSL的内存和CPU限制。

    1
    2
    3
    [wsl2]
    memory=8GB # 设置内存上限
    processors=4 # 设置CPU核心数量
  • 避免使用NTFS:WSL在NTFS文件系统上的编译性能较差。考虑将源码存放在WSL的文件系统(例如/home/username)下。

6. 编译输出

编译完成后,固件文件会输出在bin/targets/目录下。你可以将生成的固件刷入到你的设备中。

7. 定制和调试

根据需要,你可以继续调整配置文件、添加或移除软件包、修改源码,并重新编译。

Bark is an iOS App which allows you to push customed notifications to your iPhone.

Read more »

从接触Linux开始到现在,使用Linux也接近十年了,期间也尝试过各种Linux发行版。目前主要开发环境使用的时MacOS,使用起来还算是非常顺手。但是在有些时候也不太方便,比如Linux Kernel的编译、有些工具链的使用、一些Linux下工具使用,等还是使用Linux环境比较方便。Linux凭借其开源特点,各种发行版百花齐放,主流服务器大多都是使用Linux系统,比如Debain、Ubuntu、OpenSUSE等等接近十来种。Desktop发行版也有很多,常用的有Debain、Ubuntu、Deepin等等也是一堆,相关的大大小小桌面环境也有好多种,如GNOME、KDE、Xfce、LXDE等等。

Read more »