長くて時間のかかるプロセスをバックグラウンドで実行する方法は? [コピー]

長くて時間のかかるプロセスをバックグラウンドで実行する方法は? [コピー]

私は、〜10 GBのデータベース+〜1 GBのコード+〜5 GBのメディアで構成される多くのデータを含むMagento 2プロジェクトを進めています。

私のローカルサーバーに設定したいです。だから私はデータベースを使用してプロジェクト全体を圧縮したいと思います。

このコマンドを使用してデータベースバックアップを作成しようとしています。

# mysqldump -u magento2_user -p magento2_db > magento2_db-20201110.sql

データベースのバックアップを作成するには半日〜6時間かかり、このプロセス中にsh接続がバックアップされるため、バックアップを再作成する必要があります。

これで、コマンドをバックアップするためのより良い戦略ができました。

website:

tar -czvf ~/multi_dump.tar.gz --exclude=var/cache --exclude=var/session --exclude=var/log --exclude=var/tmp --exclude=var/export --exclude=var/report --exclude=var/backups --exclude='media/*import*' --exclude=media/tmp --exclude=media/downloadable --exclude=media/catalog . && echo OK

database:

mysqldump --single-transaction --add-drop-table -h <host> -u <user> -p <db_name> | gzip > dump.sql.gz

これは非常に長く時間がかかる作業です。

そのため、バックグラウンドで自動化されたプロセスでデータベースバックアップを作成する方法を探しています。

私は見つかったCtrl+Z、、bgjobsこれは、このプロセスをバックグラウンドに追加することを意味します。ただし、sshを切断して再接続すると、jobsandコマンドでbg プロセスが見つかりません。

また、このプロセスを追加しようとしましたが、crontab -e まだアクセスできません。

それでは、この問題に対するより良い解決策を持っている人はいますか?

オペレーティングシステムの詳細です。

オペレーティングシステムの詳細

ベストアンサー1

tmux(またはscreen)は実際には良いソリューションですが、追加のパッケージが必要です。

Pankiが提案したように使用するのは、nohupおそらく* nixの世界での移植性のための最良の解決策でしょう。しかし、Ubuntu 16にはsystemdが付属しているので、次のものを使用できます。systemd-runスタートコマンド:

systemd-run --unit=my_backup --remain-after-exit mysqldump --single-transaction --add-drop-table -h <host> -u <user> -p <db_name> -r magento2_db-20201110.sql

その後、通常のsystemdコマンドを使用してステータスと出力にアクセスできます。

journalctl -b -u my_backup
systemctl status my_backup

追加のsystemd-runオプションを使用すると、バックアップに使用されるリソースを簡単に制限できます。男1システム実行

いくつかの説明:

  • --remain-after-exitmy_backup.service は、 mysqldump が完了した後も維持される必要があるサービスの状態とログを照会できます (journalctl を介して)。
  • --unitsystemd-runで開始されたサービスを必要に応じて名前を付けることができます。
  • -r標準出力リダイレクトを避けるために mysqldump オプションを使用します。

systemd-run で始まるすべてのコマンドは、コマンドを終了せずにリモート SSH アクセスをオフにできます。

おすすめ記事