Linux常用命令

86 阅读3分钟

centos开启网卡

虚拟机安装好centos后,centos的网卡默认是未开启的状态 可以通过下面的方式修改

vim /etc/sysconfig/network-scripts/ifcfg-enp0s3

# 修改
ONBOOT=yes

CentOS8 图形界面和命令行切换

# 查看目前默认的启动默认
# 命令行模式   :multi-user.target<br/>
# 图形界面模式:graphical.target
systemctl get-default

# 设置为图形界面模式
systemctl set-default graphical.target

# 设置为命令行模式
systemctl set-default multi-user.target

SSH关闭X11Forwarding

修改sshd_config

vim /etc/ssh/sshd_config

X11Forwarding no

systemctl restart sshd

firewalld

启停

systemctl stop firewalld
systemctl disable firewalld
systemctl enable firewalld
systemctl start firewalld

firewall有两种开放方式:

  • 按服务
  • 按端口

公共部分:

  • --permanent 将命令操作持久化,否则reload、restart、reboot后都会失效

  • 默认所有命令操作都是非持久化的

  • firewall-cmd --reload 重新加载firewall配置

按服务

# 列出所有服务
firewall-cmd --get-services

# 添加服务
firewall-cmd --add-service=jenkins
firewall-cmd --add-service=jenkins --permanent
firewall-cmd --reload

# 列出已添加的服务
firewall-cmd --list-services

# 移除已添加的服务
firewall-cmd --remove-service=jenkins
firewall-cmd --remove-service=jenkins --permanent
firewall-cmd --reload

如果要添加的端口并没有服务对应

就要新建一个服务,在/usr/lib/firewalld/services,随便拷贝一个xml文件到一个新名字,比如myservice.xml,把里面的内容改改就可以了,short是服务名,port是需要开放的端口

<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Transmission-client</short>
<description>Transmission is a lightweight GTK+ BitTorrent client.</description>
<port protocol="tcp" port="51413"/>
</service>

按端口

# 添加端口:
firewall-cmd --zone=public --add-port=8080/tcp --permanent

# 查看开放的端口:
firewall-cmd --zone=public --list-ports

# 移除端口
firewall-cmd --remove-port=8080/tcp --permanent

获取shell脚本所在的目录

SHELL_FOLDER=$(cd "$(dirname "$0")";pwd)

chmod

转载自: www.runoob.com/linux/linux…

根据下面图片的内容,得出:

  • 读:4
  • 写:2
  • 执行:1

image.png

image.png

只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。

# 基本用法
chmod [-cfvR] [--help] [--version] mode file...

# 从某文件复制权限
chmod --reference=editormd.amd.js editormd.amd.min.js

chown

# 设置文件的owner
RUN chown -R 348:348 /usr/local/bin/docker-entrypoint.sh

# 从某文件复制文件的owner
chown -R --reference=$fromFile $toFile

curl

设置请求头

-H 'Accept: application/json, text/plain, /' 直接将浏览器的头内容复制到单引号内,跟再-H后即可

curl忽略ssl证书异常

  • --insecure
  • -k 两者二选一

find

find path -name $name
find ./ -name "install_args.txt"

grep

# 递归查找当前目录下所有包含AAA字符的文件
grep -r AAA .

# 使用正则
ls -lha /|grep -e " b.*"

sshpass实现免密登录

基本使用

# 从known_host中将目标IP删掉,以免IP对应机器重装后指纹发生变化导致失败
# 非必须
sudo sed -i "/${targetIp}/d" /root/.ssh/known_hosts

#StrictHostKeyChecking=no,忽略known_hosts的校验,直接往known_host中写入目标IP
# 命令用双引号括起来
sshpass -p ${password} ssh -o StrictHostKeyChecking=no root@${targetIp} "echo hello"

大坑

curl http://ip:port/file.sh | bash

上述命令,若file.sh中有sshpass,会导致sshpass后的命令都无法执行,初步判断是由于sshpass为了成功输入密码,切换了输入流,导致管道失效,bash无法再读取到后面的命令了

压缩解压

tar

# 压缩
tar -czf jenkins-data.tar.gz jenkins
tar -cf ../mysql.tar *

# 解压
tar -zxvf ***.tar.gz
tar -xvf ***.tar

unzip

unzip -qo wp-editormd.10.2.1.zip
  • -q 不显示文件列表
  • -o 强制覆盖

ubuntu apt-get

# 搜索
apt-cache search java

# 安装open-jdk
apt-get install openjdk-8-jdk

xargs

  • -a file 从文件中读入作为 stdin
  • -e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
  • -p 当每次执行一个argument的时候询问一次用户。
  • -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
  • -t 表示先打印命令,然后再执行。
  • -i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
  • -r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
  • -s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
  • -L num 从标准输入一次读取 num 行送给 command 命令。
  • -l 同 -L。
  • -d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
  • -x exit的意思,主要是配合-s使用。。
  • -P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。
docker ps -aq | xargs -i docker rm -f {}

用户操作

# 创建、删除分组
groupadd --system --gid 348 elasticsearch
groupdel elasticsearch

# 创建、删除用户
adduser --system --no-create-home --shell /bin/false --gid 348 --uid 348 elasticsearch 
adduser --gid 348 --uid 348 elasticsearch 
userdel elasticsearch 

# 查看用户列表
cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1 |grep -v -E '(shutdown)|(halt)|(sync)'