Linux常用小知识(1)

Linux服务管理

服务管理方式有两种:service和systemctl,systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动,systemd对应的进程管理命令是systemctl,systemctl命令兼容了service(即sytemctl也会去/etc/init.d目录下,查看,执行程序 )

systemctl enable docker #开机子启动
systemctl status docker #查看docker运行状态
systemctl disable virtualbox #取消virtualbox自启动
systemctl stop virtualbox #停止virtualbox运行
systemctl start docker #启动docker
systemctl restart docker #重启docker
systemctl list-unit-files #查看启动项命令
systemctl list-unit-files |grep enabled #过滤出enable启动项
systemctl daemon-reload  #重新载入docker的配置文件 vim /etc/docker/dameon.json文件的创建或修改
#设置ssh配置
apt-get install openssh-server #安装ssh的服务端,一般ssh的客户端系统自带
vim /etc/ssh/sshd_config  #ssh配置文件,取消注释Port 22,将PermitRootLogin prohibit-password修改为PermitRootLogin yes
service ssh restart #重启ssh

nohup 命令用于不挂断地运行命令 ,一般和 & 一起使用
命令格式:nohup command &
文件描述符:
Linux 系统预留三个文件描述符:0、1 和 2,如下所示:
0——标准输入(stdin)
1——标准输出(stdout)
2——标准错误(stderr)
Linux 特殊文件
/dev/null:是一个特殊的设备文件,这个文件接收到任何数据都会被丢弃。因此,null 这个设备通常也被称为位桶(bit bucket)或黑洞。所以,2>/dev/null 的意思就是将标准错误 stderr 删掉。

2>/dev/null #把错误输出到“黑洞”
>/dev/null 2>&1 #默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“黑洞”
2>&1 >/dev/null #把错误输出2重定向到标准输出1,也就是屏幕,标准输出进了“黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕
#案例
nohup bin/hiveserver2 1>/dev/null 2>&1 &

使用make-kpkg制作Ubuntu的内核安装包deb

背景:当 ubuntu-mate:更换内核不成功时使用
apt install kernel-package #需要下载大约800M左右文件,可能有点慢
make menuconfig  #如果选择不改动内核并保存(save)成.config
make-kpkg  --initrd --append-to-version -20220715  --revision 002 kernel_image kernel_headers -j4 #在内核源码顶层目录执行
#参数说明
#--initrd: 生成initramfs
#--append-to-version:生成内核版本附加信息
#--revision:deb文件的版本信息,只影响文件名
#kernel_image:内核和模块的安装包
#kernel_headers:生成内核头文件的安装包。
#-j:指定多少个线程编译内核
#编译完成后,会在上级目录中生成deb文件:
linux-headers-xx.xx.xx.deb
linux-image-xx.xx.xx.deb
#可以直接在ubuntu中安装:
sudo dpkg -i linux-headers-xx.xx.xx.deb #linux-headers-5.11.0-20220715_002_amd64.deb
sudo dpkg -i linux-image-xx.xx.xx.deb #linux-image-5.11.0-20220715_002_amd64.deb
dpkg --get-selections |grep linux  #查看安装的包状况
sudo update-grub
sudo reboot
#创建编译内核模块使用的build目录(如果存在就不需要以下操作了)
ln -s /usr/src/linux-headers-$(uname -r)/ /lib/modules/$(uname -r)/build #如果/lib/modules/$(uname -r)/没有build目录,是无法编译内核模块的,需要手动创建链接文件

参考网站:用make-kpkg制作Ubuntu的内核安装包deb

编译内核模块的模板Makfile(简单版本)

#内核驱动模块的模板Makefile文件
$(warning $(KERNELRELEASE))
ifeq ($(KERNELRELEASE), )
KERNELDIR ?= /lib/modules/$(shell uname -r)/build/
PWD := $(shell pwd)
$(warning $(KERNELRELEASE))
modules:
	$(warning $(PWD))
	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
	rm -rf *.o *~core .depend .*.cmd.c *.ko *.mod .tmp_versions
.PHONY: modules modules_install clean
else
$(warning "编译模块.......")
obj-m := hello.o
endif

其他命令

apt-get install -y lsb-release  #使用lsb_release -a查看系统的版本
uname -r #查看内核版本
apt-get install inetutils-ping #Ping命令
apt-get install net-tools #使用ethtool命令
apt-get install docker.io #安装docker容器
#或者(1)
apt install docker && apt install docker.io #安装docker另一种方式
docker run -it ubuntu:20.04 #运行ubuntu:20.04镜像,-itd为后台运行
docker commit -m="提交的描述信息" -a="作者"  容器id 创建的目标镜像名:[标签名] #相当于保存容器的信息
docker exec -it 容器id(通过docker ps查看) /bin/bash(可加或不加)
docker rmi ‘docker images -aq’ #批量删除<镜像>
docker rm ‘docker ps -aq’ #批量删除<容器>
docker image save ubuntu:22.04.3  > ./ubuntu-2022.04.3.tgz  #导出docker镜像
docker load -i ./ubuntu-2022.04.3.tgz # 导入镜像文件
nohup ping www.baidu.com & #后台运行(注意会产生输出文件,会占用磁盘)
docker run -it -p 127.0.0.1:8080:8080/udp ubuntu:20.04 #docker的端口映射,默认为tcp协议
dpkg -l xxxx #查看包的版本
dpkg -P xxx #删除残余的包
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值