linux常用操作
这里主要是命令行中常用的代码片
常用命令操作可以参考
shell脚本中的常用命令片段可以参考
常用路径含义
YAML
1 | /bin: 系统启动和运行所必须的二进制程序 |
网络相关
查看mac和网卡名称
BASH
1 | # 一般可以使用这个命令 |
SSH连接命令
BASH
1 | # 直接在terminal连接ssh |
设置代理
BASH
1 | # 设置http代理 |
路由相关
路由添加
BASH
1 | # 不添加网关 |
路由删除
BASH
1 | # 不添加网关 |
持久化路由表添加
BASH
1 | # 如果想要永久添加,可以放到 /etc/rc.local 中,该脚本会由 /lib/systemd/system/rc-local.service 服务来启动 |
ssh相关
创建免密登录时的证书
BASH
1 | # 在用户目录下一路回车即可 |
ssh远程连接发送命令行
需要已经配置ssh免密码登陆
命令少的情况
BASH1
2# 双引号包住命令,命令之间用分号隔开
ssh user@remoteNode "cd /home ; ls"命令多的情况
可以创建一个执行脚本BASH1
2
3
4
5
6
7
8
9
10
11# << eeooff,ssh后直到遇到eeooff这样的内容结束,eeooff可以随便修改成其他形式。
# 重定向目的在于不显示远程的输出了
# 在结束前,加exit退出远程节点
#!/bin/bash
ssh user@remoteNode > /dev/null 2>&1 << eeooff
cd /home
touch abcdefg.txt
exit
eeooff
echo done!
系统相关
三种加环境变量的方式
BASH
1 | # 1. 加到/usr/bin |
创建自启动服务
直接修改
rc.local,该脚本一般由/lib/systemd/system/rc-local.service服务来启动BASH1
2
3
4
5
6
7
8
9
10
11
12# 打开rc.local,在最后添加启动命令即可,要放到exit 0前边
sudo vi /etc/rc.local
# 如
mkdir /home/test/test1
# 如果需要用普通用户权限,则写成如下格式
su - easul -c "mkdir /home/easul/test && touch /home/easul/test/`date +%Y-%m-%d`.log"
# 修改后文件权限设置为755
sudo chmod 755 /etc/rc.local
# 可通过执行如下命令测试脚本是否可用
sudo /etc/rc.localinit.d文件夹下创建启动脚本BASH1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61# centos
# chkonfig后面是启动级别和优先级,description后面是服务描述
# 服务必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,停止的优先级是10(数字越大,优先级越低)
# 启动脚本也可以在 /etc/rc.d/init.d
scriptName="myscript"
sudo echo '#!/bin/bash
' > /etc/init.d/$scriptName
sudo echo "# chkconfig:2345 80 90
# decription:$scriptName
### BEGIN INIT INFO
# Provides: $scriptName
# Required-Start: \$network \$syslog
# Required-Stop: \$network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: $scriptName
# Description: $scriptName
### END INIT INFO
# start sshd
/usr/sbin/sshd -D &
exit 0
">> /etc/init.d/$scriptName
# 为脚本添加执行权限
sudo chmod +x /etc/init.d/$scriptName
# 添加服务
sudo chkconfig --add $scriptName
# 添加自启动
sudo chkconfig $scriptName on
# 删除服务
sudo chkconfig --del $scriptName
# 关闭自启动
sudo chkconfig $scriptName off
# 列出所有服务
sudo chkconfig --list
# 其他解释可以看这里:https://blog.csdn.net/hexiaan/article/details/125210062
##################################################
# ubuntu
scriptName="code-server"
sudo echo '#!/bin/bash
' > /etc/init.d/$scriptName
sudo echo "### BEGIN INIT INFO
# Provides: $scriptName
# Required-Start: \$network \$local_fs \$remote_fs
# Required-Stop: \$network \$local_fs \$remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: $scriptName
# Description: $scriptName
### END INIT INFO
cd `pwd`
nohup ./bin/code-server > ./logs/\$(date +%Y-%m-%d).log 2>&1 &
exit 0" >> /etc/init.d/$scriptName
sudo chmod +x /etc/init.d/$scriptName
# 添加自启动
sudo update-rc.d -f $scriptName defaults
# 删除自启动
sudo update-rc.d -f $scriptName remove创建
xx.serviceBASH1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54# [Unit]部分主要是对这个服务的说明
# Description 用于描述服务
# After 用于描述服务类别
# 如果为 network.target ,则表明该服务只在 网络功能目标已启用 后再运行,此时不保证所有网卡配置、IP 地址、路由都已经就绪
# 如果为 network-online.target ,则相当于网络已经上线,获取到IP后在运行该服务
# Wants 用于指定在该服务启动的时候,需要顺带拉起的服务
# 可以指定为 network-online.target ,保证获取到IP后再启动服务
# [Service]部分是服务的关键,是服务的一些具体运行参数的设置
# Type=forking 如果自身可以以daemon运行,用forking
# 不然就用simple
# 如果服务只运行一次,执行完命令就退出,不是常驻后台的进程,用oneshot。
# User=easul 如果服务需要在普通用户下运行,则需要添加用户和组
# Group=gitea 如果服务需要在普通用户下运行,则需要添加用户和组
# PIDFile 为存放PID的文件路径
# WorkingDirectory 为工作目录,放了就可以不用cd到工作目录了
# ExecStart 为服务的具体运行命令
# ExecReload 为重启命令
# ExecStop 为停止命令
# PrivateTmp=True 表示给服务分配独立的临时空间
# RemainAfterExit=yes 该项设置为yes后,即使 ExecStart 里的命令已经执行完并退出,systemd 仍然认为这个 service 是 active 。
# 注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!
#
# [Install]部分是服务安装的相关设置
# WantedBy=multi-user.target是设置为多用户的
sudo echo "
[Unit]
Description=httpd
After=network.target
[Service]
Type=forking
WorkingDirectory=/home/easul/software/nginx
ExecStart=/usr/local/apache2/bin/apachectl start
ExecReload=/usr/local/apache2/bin/apachectl restart
ExecStop=/usr/local/apache2/bin/apachectl stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target" > /usr/lib/systemd/system/httpd.service
# 这里的 xxx.service 的目录可以有如下几种:
# /etc/systemd/system: 优先级最高,会覆盖 /usr/lib/systemd/system/ 里的 unit
# /run/systemd/system: 优先级第二,系统运行时动态创建,重启后会消失
# /usr/lib/systemd/system: 优先级最最低,也可以用 /lib/systemd/system/ ,如果软件更新的话,这里原本属于软件的 xx.service 会被覆盖
# 建立好系统服务文件后,把其权限改成754
sudo chmod 754 /usr/lib/systemd/system/httpd.service
# 设置开机自启动
sudo systemctl enable httpd
# 如果这里的 service 是给普通用户创建呢,那么可以将配置指向到用户目录下的如下目录
# user改成自己的用户名
echo "" > /home/user/.config/systemd/user/httpd.service
# 然后就可以设置在当前用户下的 自启动 和 开启运行
systemctl --user enable x11vnc
systemctl --user start x11vnc
查看系统版本
BASH
1 | # 显示电脑以及操作系统的相关信息 |
用户相关
创建新用户
BASH
1 | # 新增普通用户 |
如果创建新用户后没有用户目录,可以进行如下操作
BASH
1 | # 删除刚刚的用户 |
用户组相关
BASH
1 | # a: 将用户追加到该组 |
uid和gid
BASH
1 | # 查看当前用户的 uid 和 gid |
进程相关
查看某端口下进程
BASH
1 | # 查看当前运行进程信息 |
批量关闭进程
BASH
1 | # 管道符 | 用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入 |
文件与目录相关
文件查找
BASH
1 | # 1. 只从环境变量查找可执行文件 |
用正则列出文件信息
可用于匹配某些文件路径
YAML
1 | 单个[*]: 匹配0-多个字符 |
BASH
1 | # 列出当前目录中没有.的文件 |
创建层级文件夹
BASH
1 | mkdir -p test/test/test |
递归复制
BASH
1 | cp -R -n ./test/图片/* ~/Pictures/Wallpapers/ |
硬件相关
命令行访问声卡
这里是在 deepin 下尝试的
BASH
1 | # 安装必备软件 |
特殊命令
双中划线
符号长这样 --,主要是用于参数的隔离。
他前边的参数会给前边的命令,他后边的参数会被认为是位置参数。
主要是用于后边的参数中有中划线的情况,如下
BASH
1 | # 如果在 mv 的时候,需要移动以 - 开头的文件,如果没有 -- 作为分隔符的话,那么 - 开头的内容会被当做是参数 |
重命名某个命令
如果需要在命令行中添加自己的特殊的标识,可以通过修改命令的名称来实现。
BASH
1 | # 这里相当于用 exec 为 sleep 命名为了 auto_text_response_sleep |
- 本文标题:linux常用操作
- 创建时间:2022-01-15 09:23:26
- 本文链接:https://blog.212490197.xyz/article/operate-system/linux/regular-operation/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
评论