在linux后台运行脚本的方法和命令

在linux后台运行脚本的方法和命令

1、不中断的在后台运行test.sh:nohup ./test.sh &(test.sh的打印信息会输出到当前目录下的nohup.out中)

2、使用jobs可看到test.sh处于running状态

3、使用ps -ef |grep test.sh可查看到正在运行的test.sh脚本进程

4、退出当前shell终端,再重新打开,使用jobs看不到正在运行的test.sh,但使用ps -ef可以看到

iftop记录Linux流量ip明细日志

1、首先安装iftop

sudo apt install iftop

2、然后用以下脚本实现:

下载以下代码的文件:http://laihp.top:8888/down/426TFMznNo3E

#!/bin/bash
for (( i = 0; i < 100000000; i=(i+1) ))
do
        nowdate1=`date +%Y%m%d`
        nowdate2=`date +%Y%m%d-%H%M`
        datetimerm=1
        iftop -i ens33 -N -P -t -L 10 -s 5 > /tmp/iftop-$nowdate2-$i.log
                if [ $(date +%M) -eq "$datetimerm" ]
                then
                        mv /tmp/iftop-* /tmp/oldiftoplog/

                fi
                if [ $(date +%d) -eq "$datetimerm" ]
                        #rm on day 1 of every mouth
                then
                        rm /tmp/oldiftoplog/*

                fi
        sleep 1
done
exit 0

在后台运行脚本

nohup ./test.sh &

在linux后台运行脚本的方法和命令

解决 git push 时 error: pack-objects died of signal 9

解决 git push 时 error: pack-objects died of signal 9

大部分是由于git服务器内存不足无法对文件进行压缩也和解压导致。
解决方案:
1.自有git服务器 :增加虚拟内存 (挂在虚拟内存文件用完可以卸载)参考
2. 清除git上面过大的文件
3. 不建议使用 –depth=1 这会造成文件冲突 除非是重新克隆

建议增加内存,增加完内存后,需要登录到服务器,找到对应仓库目录,删掉gc.log

frp搭建内网穿透服务

1、原理

FRP是一个内网穿透的神器,可以通过一个有公网IP的服务器搭建FRP服务端,去转发流量实现内网穿透。

 

安装配置:

下载安装包:Releases · fatedier/frp · GitHub

一个安装包里包含服务器端和客户端。

wget https://github.com/fatedier/frp/releases/download/v0.42.0/frp_0.42.0_linux_amd64.tar.gz
tar -xvf frp_0.42.0_linux_amd64.tar.gz

解压后,需要拷贝到服务器(frps  frps_full.ini   frps.ini)或客户端(frpc  frpc_full.ini   frpc.ini)

如下为客户端:

root@ubuntu:~/frp_0.42.0_linux_amd64# ll
total 10724
drwxr-xr-x 4 www  pulse-access     4096 Apr 27 16:18 ./
drwx------ 7 root root             4096 Apr 27 16:58 ../
-rwxr-xr-x 1 www  pulse-access 10936320 Apr 22 11:38 frpc*
-rw-r--r-- 1 www  pulse-access    10814 Apr 22 11:42 frpc_full.ini
-rw-r--r-- 1 www  pulse-access      152 Apr 27 16:52 frpc.ini
-rw-r--r-- 1 www  pulse-access    11358 Apr 22 11:42 LICENSE

 

 

服务端:

需要编辑改文件:frps.ini

[common]
bind_addr = 0.0.0.0
bind_port = 7000
token = 11223344

dashboard_port = 7001
dashboard_user = admin
dashboard_pwd = 11223344

后台运行:

nohup ./frps -c ./frps.ini

 

客户端:

需要编辑改文件:frpc.ini

[common]
server_addr = serverIP
server_port = 7000
token = 11223344

[web01]
type = tcp
local_ip = 192.168.0.52
local_port = 80
remote_port = 7002

后台运行:

nohup ./frpc -c ./frpc.ini

 

 

访问服务器的7002就会转发到内网服务器的80端口了。

 

 

 

test

azure微软云扩容os磁盘

1、控制面板升级磁盘:

先创建个快照,避免数据丢失。

然后可以用快照创建个大的磁盘。

然后再os磁盘,点击交换OS磁盘,把快照新建的磁盘替换上。

2、命令行扩容升级的空间。

258  lsblk -f
259  growpart /dev/sda 2
260  lsblk -f
261  df -h
262  gdisk -l /dev/sda
263  xfs_growfs /
264  df -h

 

参考:

https://docs.microsoft.com/zh-cn/azure/virtual-machines/linux/resize-os-disk-gpt-partition

Linux基础:后台执行脚本

后台运行脚本
执行脚本test.sh:./test.sh
中断脚本test.sh:ctrl+c
在1的基础上将运行中的test.sh,切换到后台并暂停:ctrl+z
执行ctrl+z后,test.sh在后台是暂停状态(stopped),使用命令:bg number让其在后台开始运行(“number”是使用jobs命令查到的 [ ]中的数字,不是pid)
直接在后台运行脚本test.sh:./test.sh &
查看当前shell环境中已启动的任务情况:jobs
将test.sh切换到前台运行:fg %number(”number”为使用jobs命令查看到的 [ ] 中的数字,不是pid)
中断后台运行的test.sh脚本:先fg %number切换到前台,再ctrl+c;或是直接kill %number
以上两种在后台运行test.sh的方法,当遇到退出当前shell终端时,后台运行的test.sh也就结束了。这是因为以上两种方法使得test.sh在后台运行时,运行test.sh进程的父进程是当前shell终端进程,关闭当前shell终端时,父进程退出,会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。所以要想退出当前shell终端时test.sh继续运行,则需要使用nohup忽略hangup信号。

不中断的在后台运行test.sh:nohup ./test.sh &(test.sh的打印信息会输出到当前目录下的nohup.out中)
使用jobs可看到test.sh处于running状态
使用ps -ef |grep test.sh可查看到正在运行的test.sh脚本进程
退出当前shell终端,再重新打开,使用jobs看不到正在运行的test.sh,但使用ps -ef可以看到
在后台不中断的运行test.sh,可以使用nohup忽略hangup信号,或者使用setsid将其父进程改为init进程(进程号为1)

不中断的在后台运行test.sh另一个命令:setsid ./test.sh &
使用ps -ef |grep test.sh可看到test.sh进程的父进程id为1

 

gitolite安装及配置

首先安装git相关服务及上传管理员公钥key

#安装git程序
apt install git openssh-server openssh-client
exit

#切换到root权限
sudo -su root

#上传管理员公钥到tmp下,该目录方便后边git用户拷贝key文件
ls /tmp/
cp /home/ubuntu/admin.pub /tmp/
ls -al /tmp/
chmod /tmp/admin.pub
chmod 777 /tmp/admin.pub
chmod /tmp/admin.pub
ls -al /tmp/

#创建git用户并进入到git用户视图下
sudo adduser --system --shell /bin/bash --gecos 'Git Server User' --group --disabled-password --home /home/git git
su git


 

安装gitolite

#进/home/git/下
git clone https://github.com/sitaramc/gitolite
mkdir -p bin
ls
./gitolite/install -to /home/git/bin
ls bin/
cp /tmp/admin.pub .
ls
bin/gitolite setup -pk admin.pub
ls -al
ls .ssh/

 

仓库添加管理
2、先将 gitolite-admin.git 仓库克隆到本地
git clone git-server:gitolite-admin.git (git-server 是在第 1 步配置的的)
进入到 gitolite-admin 中会有如下两个目录
conf/ 其中的文件 gitolite.conf 用于管理仓库和用户权限,例如下图包含了两个仓库,如果需要添加仓库,只需要按照格式添加,然后推到服务器就可以了
keydir/ 该目录存放了用户的公钥文件,推到服务器后 gitolite 会自动将其权限添加到 ~/.ssh/authorized_keys 文件中

 

在管理机器上
15 git clone git@10.80.0.122:gitolite-admin.git
16 cd gitolite-admin/
17 ls
18 cd conf/
19 ls
20 vim gitolite.conf
21 apt install vim
22 vim gitolite.conf

在配置文件里加了一个新的库test2
repo gitolite-admin
RW+ = admin

repo testing
RW+ = @all

repo test2
RW+ = admin

23 cd ..
24
26 cd gitolite-admin/
27 git add .
28 git commit -am “112”
29 git config –global user.email “1@qq.com”
30 git config –global user.name “1”
31 git commit -am “112”
32 git push
33 cd ..
34
35
36 git clone git@10.80.0.122:test2.git
3
38 ll

 

 

 

 

 

 

 

apt install git openssh-server openssh-client

adduser –system –shell /bin/bash –group git

adduser git ssh

passwd git
Bole202011git
Bole202101git

scp .ssh/id_rsa.pub git@192.168.3.22:/home/git/admin.pub

su git

git clone git://github.com/ossxp-com/gitolite.git

cd gitolite/src/
./gl-system-install

PATH=/home/git/bin:$PATH

 

cp -r gitolite/ /usr/share/
/usr/share/gitolite/conf/example.gitolite.rc

 

gl-setup admin.pub

 

eXtplorer File Manager

Web 版的文件管理器。通过浏览器来管理服务器上的文件。当然,要具有适当的权限。

  • 首先要确保你服务器的 PHP 版本>4.3
  • 官网下载源码:https://extplorer.net/projects/extplorer/files,然后上传源代码到服务器上的某个目录下,如 /var/www/html/ex,设置 ex的目录可写,并且设置 /var/www/html/ex 目录的权限为 777。

访问:http://server_ip/ex/

就可以使用extplorer来管理目录了。(默认登录账户密码admin)

Docker安装FileBrowser实现网页版文件管理器

FileBrowser是一款基于现代浏览器技术的WEB版多用户文件管理器,它可以与我们的Aria2、qBittorrent等软件相结合,构建一个完整的离线下载与文件管理私有云。

 

安装

拉取镜像

docker pull filebrowser/filebrowser

创建所需文件夹
#日志与数据库

mkdir ~/filebrowser_data

运行容器

docker run \
-v /path/to/root:/srv \
-p 80:80 \
--restart=always \
filebrowser/filebrowser

路径与端口含义

/path/to/root:欲挂载的宿主机目录,文件管理将以这个目录作为根目录。
80:访问端口
开始使用
访问http://ip:port,如果得法,会进入登录界面。
初始管理员账户名与密码均为admin。
进入界面后,在Setting->Profile Settings中修改账户显示语言为简体中文。
在用户管理中可以添加多个用户,并分别设置它们的权限(诸如上传、下载、删除等文件管理权限)。