mirror of
https://github.com/no-passwd/lxc-toolkit.git
synced 2025-07-13 12:52:34 +08:00
Initial commit
This commit is contained in:
parent
7bd38aae84
commit
8aba987328
165
lxc-toolkit.sh
Normal file
165
lxc-toolkit.sh
Normal file
@ -0,0 +1,165 @@
|
||||
#!/usr/bin/env bash
|
||||
#license by MIT
|
||||
#https://github.com/no-passwd/lxc-toolkit
|
||||
os="none"
|
||||
vm="none"
|
||||
|
||||
if [ -n "$BASH_VERSION" ]; then
|
||||
echo "lxc-toolkit.sh v1.1"
|
||||
else
|
||||
echo -e "\033[31m请使用bash运行脚本,不是sh\033[0m"
|
||||
echo "bash lxc-toolkit.sh"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
echo -e "\033[31m错误:请输入参数\033[0m"
|
||||
echo "常见参数: "
|
||||
echo "lxc-toolkit.sh free -> 查看宿主机free -m"
|
||||
echo "lxc-toolkit.sh fdisk -> 查看宿主机fdisk"
|
||||
echo "lxc-toolkit.sh swapon -> 查看宿主机swapon"
|
||||
echo "lxc-toolkit.sh uptime -> 查看宿主机uptime"
|
||||
echo "lxc-toolkit.sh load -> 查看宿主机load负载"
|
||||
echo "lxc-toolkit.sh top -> 查看宿主机processes统计"
|
||||
echo "lxc-toolkit.sh cpu -> 查看宿主机cpu核心"
|
||||
echo "lxc-toolkit.sh all -> 同时运行上述所有的命令"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ty=$1
|
||||
|
||||
if [ "$(id -u)" != 0 ] ;then
|
||||
echo -e "\033[31m未使用root权限运行,无法获取系统信息\033[0m"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
if [ "$ID" = "alpine" ]; then
|
||||
#系统是 Alpine Linux。
|
||||
os="alpine"
|
||||
else
|
||||
#系统不是 Alpine Linux。
|
||||
os="debian"
|
||||
fi
|
||||
else
|
||||
#/etc/os-release 文件不存在。将就用debian。其他系统暂时未考虑
|
||||
os="debian"
|
||||
fi
|
||||
|
||||
#检测alpine的lxc,其实还有更好的方法。暂时没用
|
||||
if [ "$os" == "alpine" ]; then
|
||||
if grep -qa container=lxc /proc/1/environ; then
|
||||
vm="lxc"
|
||||
elif grep -qa lxc /proc/1/cgroup; then
|
||||
vm="lxc"
|
||||
else
|
||||
vm="kvm"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$os" == "debian" ] ;then
|
||||
if command -v systemd-detect-virt >/dev/null 2>&1; then
|
||||
echo "正在检测环境..."
|
||||
if systemd-detect-virt -q; then
|
||||
vm=$(systemd-detect-virt)
|
||||
else
|
||||
vm="none"
|
||||
fi
|
||||
else
|
||||
apt-get install -y virt-what
|
||||
getvm=$(virt-what)
|
||||
if [[ "$getvm" == *"lxc"* ]]; then
|
||||
vm="lxc"
|
||||
else
|
||||
vm="none"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$vm" != "lxc" ]
|
||||
then
|
||||
echo -e "\033[31m虚拟化为 $vm 不是lxc,该脚本对非lxc系统无意义\033[0m"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo -e "\033[32m正在检测挂载点...\033[0m"
|
||||
read -r device mountpoint fstype rest < /etc/mtab
|
||||
echo "挂载点设备名: $device"
|
||||
echo "挂载点: $mountpoint"
|
||||
echo "文件系统类型: $fstype"
|
||||
|
||||
mnt="none"
|
||||
if [ "$mountpoint" == "/" ]; then
|
||||
if [[ "$device" == *loop* ]]; then
|
||||
mnt="loop"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$vm" == "lxc" ]
|
||||
then
|
||||
echo -e "\033[32m开始检测宿主机系统信息...\033[0m"
|
||||
chmod 755 lxc-check
|
||||
if [ "$mnt" == "loop" ] ;then
|
||||
if [[ -x "./lxc-check" ]]; then
|
||||
if [ "$ty" == "all" ] ; then
|
||||
./lxc-check -c -m -d -s -l -p -u
|
||||
fi
|
||||
if [ "$ty" == "free" ] ; then
|
||||
./lxc-check -m
|
||||
fi
|
||||
if [ "$ty" == "fdisk" ] ; then
|
||||
./lxc-check -d
|
||||
fi
|
||||
if [ "$ty" == "swapon" ] ; then
|
||||
./lxc-check -s
|
||||
fi
|
||||
if [ "$ty" == "uptime" ] ; then
|
||||
./lxc-check -u
|
||||
fi
|
||||
if [ "$ty" == "load" ] ; then
|
||||
./lxc-check -l
|
||||
fi
|
||||
if [ "$ty" == "top" ] ; then
|
||||
./lxc-check -p
|
||||
fi
|
||||
if [ "$ty" == "cpu" ] ; then
|
||||
./lxc-check -c
|
||||
fi
|
||||
else
|
||||
echo -e "\033[31m缺少检测配置文件,退出...\033[0m"
|
||||
fi
|
||||
else
|
||||
if [[ -x "./lxc-check" ]]; then
|
||||
if [ "$ty" == "all" ] ; then
|
||||
./lxc-check -c -m -s -l -p -u
|
||||
fi
|
||||
if [ "$ty" == "free" ] ; then
|
||||
./lxc-check -m
|
||||
fi
|
||||
if [ "$ty" == "fdisk" ] ; then
|
||||
mount
|
||||
fi
|
||||
if [ "$ty" == "swapon" ] ; then
|
||||
./lxc-check -s
|
||||
fi
|
||||
if [ "$ty" == "uptime" ] ; then
|
||||
./lxc-check -u
|
||||
fi
|
||||
if [ "$ty" == "load" ] ; then
|
||||
./lxc-check -l
|
||||
fi
|
||||
if [ "$ty" == "top" ] ; then
|
||||
./lxc-check -p
|
||||
fi
|
||||
if [ "$ty" == "cpu" ] ; then
|
||||
./lxc-check -c
|
||||
fi
|
||||
else
|
||||
echo -e "\033[31m缺少检测配置文件,退出...\033[0m"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo -e "\033[31m系统不是lxc,退出...\033[0m"
|
||||
exit 0
|
||||
fi
|
14
test.c
Normal file
14
test.c
Normal file
@ -0,0 +1,14 @@
|
||||
//license by MIT
|
||||
//https://github.com/no-passwd/lxc-toolkit
|
||||
#define _GNU_SOURCE
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
int main() {
|
||||
long nprocs = sysconf(_SC_NPROCESSORS_ONLN);
|
||||
if (nprocs >= 0) {
|
||||
printf("从系统调用中获取到的CPU核心数: %ld 个\n", nprocs);
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user