前言
最近在工作接触到一些linux 操作命令,这里将其总结下来作为参考。
linux 命令
权限相关
用户及用户组
1、查看当前存在所有用户
[root@VM-16-10-centos ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
用户名:用户口令:用户id:用户所在组id:备注:用户所在目录:shell命令所在目录
2、查看当前存在所有用户组
[root@VM-16-10-centos ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
用户组:用户组口令:组id
3、创建用户组
groupadd -g 607 deploy
#-g 指定用户组id
4、创建用户deployop并指定用户组deployop
#删除用户deployop
userdel deployop
#创建用户deployop并指定用户组deployop
useradd -m -d /deployop -u 1001 -g deploy deployop
# 给deployop 设置密码depPassword
echo deployop:depPassword | chpasswd
# 设置deployop 99999天不能修改密码
chage -M 99999 deployop
#-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
#-d和-m选项用来为登录名deployop产生一个主目录
#-g 用户组 指定用户所属的用户组。
#-s Shell文件 指定用户的登录Shell。
#-u 用户号 指定用户的用户Id,如果同时有-o选项,则可以重复使用其他用户的标识号。
5、处理创建用户必要文件
cat >/deployop/.bash_profile<<EOF
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific enviroment and startup progrem
PATH=$PATH:$HOME/bin
export PATH
EOF
cat >/deployop/.bashrc<<EOF
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
EOF
5、查看当前登陆用户
[root@VM-16-10-centos /]# echo whoami=`whoami`
whoami=root
[root@VM-16-10-centos /]# whoami
root
6、指定用户执行命令
su deployop -l -c "mkdir -p /deployop/testDir"
#-l 指登陆用户执行
#-c 执行 shell 命令
设置文件/目录权限
1、切换用户创建文件(docker 登陆默认创建登陆设置文件,.开头文件linux 默认不可见;ocker 会将 token 存储在 ~/.docker/config.json 文件中)
#切换用户
su deployop
mkdir -p /deployop/.docker
cat>/deployop/.docker/config.json<<EOF
{
"auths":{
"test.login.url":{
"auth":"testPassword"
}
}
}
EOF
2.修改文件目录用户及用户组
su root
# 切换用户组.docker 为root:root
chown -R root:root /deployop/.docker/
3、修改用户权限设置
#修改用户权限 4 可读 1 可执行 2 可写,644 代表用户本人4+2 可读/可写
# 同一组人 4 可读 其他 4可读
chmod 644 /deployop/.docker/config.json
docker
1、安装docker
# 移除之前安装内容
yum remove -y docker \
docker-client \
docker-client-lastest\
docker-common \
docker-lastest \
docker-lastest-logrotate \
docker-logrotate \
docker-engine
yum remove -y docker-ce docker-ce-li containerd.io
# 安装准备
yum install -y lrzsz zip unzip go glibc.i686 java-1.8.0-openjdk-devel.x86_64 expect ftp git
yum install -y yum-utils device-mapper-persistent-data lvm2
#添加安装docker-ce docker-ce-cli containerd.io 的yum 源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装docker-ce 等内容
yum install -y docker-ce docker-ce-cli containerd.io docker-compose
#安装其他想要内容
yum install -y policycoreutils-python*
2、修改安装
#关闭selinux模式 (防止docker无法重启之类)
sed -i '/SELINUX=enforcing/cSELINUX=disabled' /etc/sysconfig/selinux
setenforce 0
3、让deployop 到docker用户组,让其使用docker
groupadd docker;gpasswd -a deployop docker
4、重启docker
restart docker.service
5、创建一个docker 容器
docker run it --privileged -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos01 \
-p 2022:22 \
-d centos:8
# -i 也要保持标准输入保持打开状态,一般与 -t 连用。
# -d 在后台运行容器,并且打印容器i
# -t 分配一个伪tty,一般与 -i 连用。
# -v 只挂靠用户目录
# -p 暴露端口
6、登录到docker容器内部
docker exec -it mycentos01 /bin/bash
7、docker 容器和宿主机之间相互拷贝文件
# 将docker容器中文件test.txt 拷贝到~ 目录
docker cp mycentos01:/var/tmp/test.txt ~
# 将宿主机内容报备docker容器
docker cp ~/test.txt mycentos01:/var/tmp/test2.txt
8、整个docker 已经死,直接重启docker
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
systemctl daemon-reload
systemctl restart docker.service
9.docker修改daemon.json 非重启生效
# 给 dockerd 发送 SIGHUP 信号,dockerd 收到信号后会 reload 配置
kill -SIGHUP $(pidof dockerd)
10.清理未使用镜像文件
docker system prune -af
11.有时候docker启动报错可以尝试直接使用dockerd 启动,会展示启动失败更加详细信息
服务器间目录、文件同步
1、复制本地文件到远程服务器
#将本地文件夹/deployop 复制到/deployop1
scp -rp /deployop root@1.15.63.153:/deployop1
#-r 递归复制整个目录,
#-p保留原文件的修改时间,访问时间和访问权限
# 将本地文件复制到test.txt 到服务器text2.txt
scp -p /deployop/test.txt root@1.15.63.153:/deployop1/text2.txt
2、复制远程服务器到本地
#将1.15.63.153文件夹/deployop1 复制到/deployop2
scp -rp root@1.15.63.153:/deployop1 /deployop2
#-r 递归复制整个目录,
#-p保留原文件的修改时间,访问时间和访问权限
# 将1.15.63.153文件test2.txt 到本地text3.txt
scp -p root@1.15.63.153:/deployop1/text2.txt /deployop2/text3.txt
3、rsync远程服务器同步到本地
# 复制远程1.15.63.153 文件夹到本地
rsync -avzP root@1.15.63.153:/deployop1 /deployop2
rsync -avzP root@1.15.63.153:/deployop1/test.txt /deployop2/test5.txt
4、rsync 同步本地数据到远程
# 复制本地文件夹1.15.63.153 远程
rsync -avzP /deployop2 root@1.15.63.153:/deployop2
#复制本地test5.txt到远程服务器
rsync -avzP /deployop2/test5.txt root@1.15.63.153:/deployop2/test7.txt
其他
杀死僵尸进程
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs -i kill -9 {}
# -o 只显示指定参数 stat 状态 ppid 父进程 pid 进程
# grep -e '^[Zz]' 过滤出需要杀死的僵尸进程
# awk 打印出第二个参数
# xargs -i {} 与|结合使用用返回参数代替{}
重启服务器
# 重启服务器
reboot
#强制重启服务
reboot -f
获取当前linux ip
这个是我的linux 可以获取对应ip,不同linux 需要作出对应调整,都是可以用下面几个命令拼凑出来的
ifconfig -a|grep inet| grep -v 127.0.0.1 | grep -v inet6 | awk '{print $2}' | tr -d "addr:"
# grep -v 过滤掉内容
# awk '{print $2}' 代表打印出第二行
# tr -d 需要删除的字符
创建软连接
建立软连接之后两个目录,都会进行同步
#删除testDir2 并建立软连接
rm -rf /deployop/testDir2;ln -s /deployop/testDir /deployop/testDir2
yum
# 1、查看yum 源和更改yum源
ll /etc/yum.repos.d/
cat /etc/yum.repos.d/CentOS-Base.repo
# 2、更改yum源
mv CentOS-Base.repo CentOS-Base.repo.back20211218
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
#重新加载yum
yum clean all
yum makecache