bench-commands
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseBench CLI Commands Reference
Bench CLI命令参考手册
Complete reference for the Frappe Bench command-line interface for managing Frappe/ERPNext installations.
这是用于管理Frappe/ERPNext安装的Frappe Bench命令行界面完整参考手册。
When to Use This Skill
何时使用本工具
- Running bench commands for development
- Managing Frappe sites
- Installing and updating apps
- Running migrations and builds
- Setting up production environments
- Troubleshooting common issues
- 开发时执行bench命令
- 管理Frappe站点
- 安装和更新应用
- 执行迁移和构建
- 搭建生产环境
- 排查常见问题
Bench Directory Structure
Bench目录结构
frappe-bench/
├── apps/ # Frappe apps
│ ├── frappe/ # Core framework
│ ├── erpnext/ # ERPNext (if installed)
│ └── my_app/ # Custom apps
├── sites/ # Sites directory
│ ├── common_site_config.json
│ ├── apps.txt # List of installed apps
│ └── my_site.local/ # Individual site
│ ├── site_config.json
│ ├── private/
│ └── public/
├── config/ # Configuration files
├── logs/ # Log files
├── env/ # Python virtual environment
└── node_modules/ # Node.js dependenciesfrappe-bench/
├── apps/ # Frappe应用
│ ├── frappe/ # 核心框架
│ ├── erpnext/ # ERPNext(若已安装)
│ └── my_app/ # 自定义应用
├── sites/ # 站点目录
│ ├── common_site_config.json
│ ├── apps.txt # 已安装应用列表
│ └── my_site.local/ # 独立站点
│ ├── site_config.json
│ ├── private/
│ └── public/
├── config/ # 配置文件
├── logs/ # 日志文件
├── env/ # Python虚拟环境
└── node_modules/ # Node.js依赖Site Management
站点管理
Create Site
创建站点
bash
undefinedbash
undefinedCreate new site
Create new site
bench new-site mysite.local
bench new-site mysite.local
With specific database
With specific database
bench new-site mysite.local --db-name mysite_db
bench new-site mysite.local --db-name mysite_db
With MariaDB root password
With MariaDB root password
bench new-site mysite.local --mariadb-root-password mypassword
bench new-site mysite.local --mariadb-root-password mypassword
With admin password
With admin password
bench new-site mysite.local --admin-password admin123
bench new-site mysite.local --admin-password admin123
From SQL file
From SQL file
bench new-site mysite.local --source_sql /path/to/backup.sql
bench new-site mysite.local --source_sql /path/to/backup.sql
Skip creating default user
Skip creating default user
bench new-site mysite.local --no-mariadb-socket
undefinedbench new-site mysite.local --no-mariadb-socket
undefinedUse Site
使用站点
bash
undefinedbash
undefinedSet default site
Set default site
bench use mysite.local
bench use mysite.local
Run command on specific site
Run command on specific site
bench --site mysite.local migrate
bench --site mysite.local migrate
Run on all sites
Run on all sites
bench --site all migrate
undefinedbench --site all migrate
undefinedSite Operations
站点操作
bash
undefinedbash
undefinedList all sites
List all sites
bench list-sites
bench list-sites
Drop site (delete)
Drop site (delete)
bench drop-site mysite.local
bench drop-site mysite.local
Drop with force
Drop with force
bench drop-site mysite.local --force
bench drop-site mysite.local --force
Set site maintenance mode
Set site maintenance mode
bench --site mysite.local set-maintenance-mode on
bench --site mysite.local set-maintenance-mode off
bench --site mysite.local set-maintenance-mode on
bench --site mysite.local set-maintenance-mode off
Disable scheduler
Disable scheduler
bench --site mysite.local disable-scheduler
bench --site mysite.local enable-scheduler
undefinedbench --site mysite.local disable-scheduler
bench --site mysite.local enable-scheduler
undefinedBackup & Restore
备份与恢复
bash
undefinedbash
undefinedBackup site
Backup site
bench --site mysite.local backup
bench --site mysite.local backup
Backup with files
Backup with files
bench --site mysite.local backup --with-files
bench --site mysite.local backup --with-files
Backup all sites
Backup all sites
bench --site all backup
bench --site all backup
Restore from backup
Restore from backup
bench --site mysite.local restore /path/to/backup.sql.gz
bench --site mysite.local restore /path/to/backup.sql.gz
Restore with files
Restore with files
bench --site mysite.local restore /path/to/backup.sql.gz
--with-private-files /path/to/private.tar
--with-public-files /path/to/public.tar
--with-private-files /path/to/private.tar
--with-public-files /path/to/public.tar
undefinedbench --site mysite.local restore /path/to/backup.sql.gz
--with-private-files /path/to/private.tar
--with-public-files /path/to/public.tar
--with-private-files /path/to/private.tar
--with-public-files /path/to/public.tar
undefinedApp Management
应用管理
Get Apps
获取应用
bash
undefinedbash
undefinedGet app from GitHub
Get app from GitHub
bench get-app https://github.com/frappe/erpnext
bench get-app https://github.com/frappe/erpnext
Get specific branch
Get specific branch
bench get-app https://github.com/frappe/erpnext --branch version-14
bench get-app https://github.com/frappe/erpnext --branch version-14
Get specific tag
Get specific tag
bench get-app https://github.com/frappe/erpnext --tag v14.0.0
bench get-app https://github.com/frappe/erpnext --tag v14.0.0
Get from local path
Get from local path
bench get-app /path/to/my_app
bench get-app /path/to/my_app
Get and install on all sites
Get and install on all sites
bench get-app erpnext --install-all
undefinedbench get-app erpnext --install-all
undefinedInstall/Uninstall Apps
安装/卸载应用
bash
undefinedbash
undefinedInstall app on site
Install app on site
bench --site mysite.local install-app erpnext
bench --site mysite.local install-app erpnext
Install app on all sites
Install app on all sites
bench --site all install-app my_app
bench --site all install-app my_app
Uninstall app
Uninstall app
bench --site mysite.local uninstall-app my_app
bench --site mysite.local uninstall-app my_app
Uninstall with force (removes data)
Uninstall with force (removes data)
bench --site mysite.local uninstall-app my_app --yes --force
undefinedbench --site mysite.local uninstall-app my_app --yes --force
undefinedCreate New App
创建新应用
bash
undefinedbash
undefinedCreate new app
Create new app
bench new-app my_app
bench new-app my_app
App will be created in apps/ directory with:
App will be created in apps/ directory with:
- my_app/my_app/
- my_app/my_app/
- hooks.py
- hooks.py
- modules.txt
- modules.txt
- patches.txt
- patches.txt
- requirements.txt
- requirements.txt
undefinedundefinedUpdate Apps
更新应用
bash
undefinedbash
undefinedUpdate all apps
Update all apps
bench update
bench update
Update without migrations
Update without migrations
bench update --no-migrations
bench update --no-migrations
Update specific app
Update specific app
bench update --apps erpnext
bench update --apps erpnext
Update without pulling
Update without pulling
bench update --no-pull
bench update --no-pull
Update without building assets
Update without building assets
bench update --no-build
bench update --no-build
Reset to fresh install
Reset to fresh install
bench update --reset
undefinedbench update --reset
undefinedRemove App
移除应用
bash
undefinedbash
undefinedRemove app from bench (not from sites)
Remove app from bench (not from sites)
bench remove-app my_app
bench remove-app my_app
Remove from site first
Remove from site first
bench --site mysite.local uninstall-app my_app
bench remove-app my_app
undefinedbench --site mysite.local uninstall-app my_app
bench remove-app my_app
undefinedDevelopment Commands
开发命令
Start Development Server
启动开发服务器
bash
undefinedbash
undefinedStart development server (web + redis + scheduler)
Start development server (web + redis + scheduler)
bench start
bench start
Start with specific workers
Start with specific workers
bench start --procfile Procfile.dev
bench start --procfile Procfile.dev
Start only web server
Start only web server
bench serve
bench serve
Start on specific port
Start on specific port
bench serve --port 8001
undefinedbench serve --port 8001
undefinedBuild Assets
构建资源
bash
undefinedbash
undefinedBuild assets (JS/CSS)
Build assets (JS/CSS)
bench build
bench build
Build specific app
Build specific app
bench build --app my_app
bench build --app my_app
Build with verbose output
Build with verbose output
bench build --verbose
bench build --verbose
Build production assets
Build production assets
bench build --production
bench build --production
Build and minify
Build and minify
bench build --make-copy
bench build --make-copy
Watch for changes
Watch for changes
bench watch
undefinedbench watch
undefinedMigrate
迁移
bash
undefinedbash
undefinedRun migrations
Run migrations
bench --site mysite.local migrate
bench --site mysite.local migrate
Migrate all sites
Migrate all sites
bench --site all migrate
bench --site all migrate
Migrate specific app
Migrate specific app
bench --site mysite.local migrate --app my_app
bench --site mysite.local migrate --app my_app
Skip failing patches
Skip failing patches
bench --site mysite.local migrate --skip-failing
undefinedbench --site mysite.local migrate --skip-failing
undefinedClear Cache
清除缓存
bash
undefinedbash
undefinedClear cache
Clear cache
bench --site mysite.local clear-cache
bench --site mysite.local clear-cache
Clear all cache including redis
Clear all cache including redis
bench --site mysite.local clear-website-cache
bench --site mysite.local clear-website-cache
Clear redis cache
Clear redis cache
bench clear-redis-cache
undefinedbench clear-redis-cache
undefinedConsole
控制台
bash
undefinedbash
undefinedOpen Python console
Open Python console
bench --site mysite.local console
bench --site mysite.local console
In console:
In console:
>>> doc = frappe.get_doc("Customer", "CUST-001")
>>> doc = frappe.get_doc("Customer", "CUST-001")
>>> doc.customer_name
>>> doc.customer_name
>>> frappe.db.sql("SELECT * FROM tabCustomer")
>>> frappe.db.sql("SELECT * FROM tabCustomer")
Run Python script
Run Python script
bench --site mysite.local execute myapp.scripts.my_function
bench --site mysite.local execute myapp.scripts.my_function
Execute with arguments
Execute with arguments
bench --site mysite.local execute myapp.scripts.my_function --args='["arg1", "arg2"]'
undefinedbench --site mysite.local execute myapp.scripts.my_function --args='["arg1", "arg2"]'
undefinedMariaDB Console
MariaDB控制台
bash
undefinedbash
undefinedOpen MariaDB console
Open MariaDB console
bench --site mysite.local mariadb
bench --site mysite.local mariadb
Run SQL query
Run SQL query
bench --site mysite.local mariadb -e "SELECT * FROM tabCustomer LIMIT 5"
undefinedbench --site mysite.local mariadb -e "SELECT * FROM tabCustomer LIMIT 5"
undefinedRun Tests
运行测试
bash
undefinedbash
undefinedRun all tests
Run all tests
bench --site mysite.local run-tests
bench --site mysite.local run-tests
Run tests for specific app
Run tests for specific app
bench --site mysite.local run-tests --app my_app
bench --site mysite.local run-tests --app my_app
Run specific test
Run specific test
bench --site mysite.local run-tests --module my_app.my_module.doctype.my_doctype.test_my_doctype
bench --site mysite.local run-tests --module my_app.my_module.doctype.my_doctype.test_my_doctype
Run with coverage
Run with coverage
bench --site mysite.local run-tests --coverage
bench --site mysite.local run-tests --coverage
Run specific test class
Run specific test class
bench --site mysite.local run-tests --doctype "My DocType"
bench --site mysite.local run-tests --doctype "My DocType"
Run parallel tests
Run parallel tests
bench --site mysite.local run-tests --parallel
bench --site mysite.local run-tests --parallel
Skip test setup
Skip test setup
bench --site mysite.local run-tests --skip-setup
undefinedbench --site mysite.local run-tests --skip-setup
undefinedTranslation
翻译
bash
undefinedbash
undefinedUpdate translation files
Update translation files
bench --site mysite.local update-translations
bench --site mysite.local update-translations
Export translations
Export translations
bench --site mysite.local export-translations
bench --site mysite.local export-translations
Import translations
Import translations
bench --site mysite.local import-translations /path/to/translations.csv
undefinedbench --site mysite.local import-translations /path/to/translations.csv
undefinedProduction Setup
生产环境搭建
Setup Production
配置生产环境
bash
undefinedbash
undefinedSetup for production (systemd, nginx, supervisor)
Setup for production (systemd, nginx, supervisor)
sudo bench setup production frappe-user
sudo bench setup production frappe-user
Setup supervisor
Setup supervisor
bench setup supervisor
bench setup supervisor
Setup systemd
Setup systemd
bench setup systemd
bench setup systemd
Setup nginx
Setup nginx
bench setup nginx
bench setup nginx
Setup Redis
Setup Redis
bench setup redis
bench setup redis
Setup fail2ban
Setup fail2ban
bench setup fail2ban
undefinedbench setup fail2ban
undefinedSSL/Let's Encrypt
SSL/Let's Encrypt
bash
undefinedbash
undefinedSetup Let's Encrypt SSL
Setup Let's Encrypt SSL
sudo bench setup lets-encrypt mysite.local
sudo bench setup lets-encrypt mysite.local
Renew certificates
Renew certificates
sudo bench renew-lets-encrypt
undefinedsudo bench renew-lets-encrypt
undefinedRestart Services
重启服务
bash
undefinedbash
undefinedRestart supervisor
Restart supervisor
sudo supervisorctl restart all
sudo supervisorctl restart all
Restart specific
Restart specific
sudo supervisorctl restart frappe-bench-web:*
sudo supervisorctl restart frappe-bench-workers:*
sudo supervisorctl restart frappe-bench-web:*
sudo supervisorctl restart frappe-bench-workers:*
Restart systemd
Restart systemd
sudo systemctl restart frappe-bench-web
sudo systemctl restart frappe-bench-schedule
sudo systemctl restart frappe-bench-web
sudo systemctl restart frappe-bench-schedule
Check status
Check status
sudo supervisorctl status
undefinedsudo supervisorctl status
undefinedScheduler & Workers
调度器与工作进程
Scheduler
调度器
bash
undefinedbash
undefinedEnable scheduler
Enable scheduler
bench --site mysite.local enable-scheduler
bench --site mysite.local enable-scheduler
Disable scheduler
Disable scheduler
bench --site mysite.local disable-scheduler
bench --site mysite.local disable-scheduler
Check scheduler status
Check scheduler status
bench --site mysite.local show-scheduler-status
bench --site mysite.local show-scheduler-status
Run specific scheduled job
Run specific scheduled job
bench --site mysite.local execute frappe.tasks.run_daily
undefinedbench --site mysite.local execute frappe.tasks.run_daily
undefinedBackground Jobs
后台任务
bash
undefinedbash
undefinedShow queued jobs
Show queued jobs
bench --site mysite.local show-pending-jobs
bench --site mysite.local show-pending-jobs
Clear failed jobs
Clear failed jobs
bench --site mysite.local clear-website-cache
bench --site mysite.local clear-website-cache
Run specific queue
Run specific queue
bench worker --queue default
bench worker --queue short
bench worker --queue long
bench worker --queue default
bench worker --queue short
bench worker --queue long
Purge jobs
Purge jobs
bench --site mysite.local purge-jobs
undefinedbench --site mysite.local purge-jobs
undefinedConfiguration
配置
Site Config
站点配置
bash
undefinedbash
undefinedShow site config
Show site config
bench --site mysite.local show-config
bench --site mysite.local show-config
Set config value
Set config value
bench --site mysite.local set-config key value
bench --site mysite.local set-config key value
Set config with JSON value
Set config with JSON value
bench --site mysite.local set-config limits '{"users": 10}'
bench --site mysite.local set-config limits '{"users": 10}'
Set common config (all sites)
Set common config (all sites)
bench set-config key value
bench set-config key value
Remove config
Remove config
bench --site mysite.local remove-config key
undefinedbench --site mysite.local remove-config key
undefinedCommon Configurations
常见配置
python
undefinedpython
undefinedsite_config.json
site_config.json
{
"db_name": "mysite_db",
"db_password": "password",
"db_type": "mariadb",
"encryption_key": "xxxxx",
"developer_mode": 0,
"maintenance_mode": 0,
"pause_scheduler": 0,
"mail_server": "smtp.gmail.com",
"mail_port": 587,
"use_tls": 1,
"mail_login": "user@gmail.com",
"mail_password": "password",
"auto_email_id": "noreply@mysite.com",
"mute_emails": 0,
"enable_scheduler": 1,
"limits": {
"users": 10,
"emails": 500,
"space": 5120
}
}
undefined{
"db_name": "mysite_db",
"db_password": "password",
"db_type": "mariadb",
"encryption_key": "xxxxx",
"developer_mode": 0,
"maintenance_mode": 0,
"pause_scheduler": 0,
"mail_server": "smtp.gmail.com",
"mail_port": 587,
"use_tls": 1,
"mail_login": "user@gmail.com",
"mail_password": "password",
"auto_email_id": "noreply@mysite.com",
"mute_emails": 0,
"enable_scheduler": 1,
"limits": {
"users": 10,
"emails": 500,
"space": 5120
}
}
undefinedBench Config
Bench配置
bash
undefinedbash
undefinedShow bench config
Show bench config
bench config list
bench config list
Set bench config
Set bench config
bench config set serve_port 8001
bench config set redis_cache_port 13000
bench config set serve_port 8001
bench config set redis_cache_port 13000
Common bench configs
Common bench configs
bench config set developer_mode 1
bench config set webserver_port 8000
bench config set background_workers 1
undefinedbench config set developer_mode 1
bench config set webserver_port 8000
bench config set background_workers 1
undefinedTroubleshooting Commands
故障排查命令
Logs
日志
bash
undefinedbash
undefinedView logs
View logs
tail -f logs/frappe.log
tail -f logs/web.error.log
tail -f logs/worker.error.log
tail -f logs/scheduler.error.log
tail -f logs/frappe.log
tail -f logs/web.error.log
tail -f logs/worker.error.log
tail -f logs/scheduler.error.log
Site-specific logs
Site-specific logs
tail -f sites/mysite.local/logs/frappe.log
undefinedtail -f sites/mysite.local/logs/frappe.log
undefinedDebug
调试
bash
undefinedbash
undefinedCheck site health
Check site health
bench --site mysite.local doctor
bench --site mysite.local doctor
Show database stats
Show database stats
bench --site mysite.local show-db-size
bench --site mysite.local show-db-size
Show table sizes
Show table sizes
bench --site mysite.local --db-type mariadb execute
"SELECT table_name, data_length FROM information_schema.tables WHERE table_schema = 'mysite_db'"
"SELECT table_name, data_length FROM information_schema.tables WHERE table_schema = 'mysite_db'"
bench --site mysite.local --db-type mariadb execute
"SELECT table_name, data_length FROM information_schema.tables WHERE table_schema = 'mysite_db'"
"SELECT table_name, data_length FROM information_schema.tables WHERE table_schema = 'mysite_db'"
Check scheduled jobs
Check scheduled jobs
bench --site mysite.local show-scheduler-status
bench --site mysite.local show-scheduler-status
Reset password
Reset password
bench --site mysite.local set-admin-password newpassword
bench --site mysite.local set-admin-password newpassword
Add system manager
Add system manager
bench --site mysite.local add-system-manager user@example.com
undefinedbench --site mysite.local add-system-manager user@example.com
undefinedFix Common Issues
修复常见问题
bash
undefinedbash
undefinedRebuild search index
Rebuild search index
bench --site mysite.local build-search-index
bench --site mysite.local build-search-index
Reset desk customizations
Reset desk customizations
bench --site mysite.local reset-perms
bench --site mysite.local reset-perms
Clear all locks
Clear all locks
bench --site mysite.local clear-locks
bench --site mysite.local clear-locks
Reinstall
Reinstall
bench --site mysite.local reinstall --yes
bench --site mysite.local reinstall --yes
Partial restore
Partial restore
bench --site mysite.local partial-restore /path/to/backup.sql
undefinedbench --site mysite.local partial-restore /path/to/backup.sql
undefinedVersion Management
版本管理
bash
undefinedbash
undefinedCheck versions
Check versions
bench version
bench version
Switch branch
Switch branch
bench switch-to-branch version-14 frappe erpnext
bench switch-to-branch version-14 frappe erpnext
Switch to develop
Switch to develop
bench switch-to-branch develop --upgrade
bench switch-to-branch develop --upgrade
Set version
Set version
bench set-bench-version 5.x
undefinedbench set-bench-version 5.x
undefinedMulti-Tenancy
多租户
bash
undefinedbash
undefinedSetup multi-tenancy
Setup multi-tenancy
bench config dns_multitenant on
bench config dns_multitenant on
Add domain to site
Add domain to site
bench --site mysite.local add-domain newdomain.com
bench --site mysite.local add-domain newdomain.com
Remove domain
Remove domain
bench --site mysite.local remove-domain newdomain.com
bench --site mysite.local remove-domain newdomain.com
Setup wildcard SSL
Setup wildcard SSL
sudo certbot certonly --webroot -w /var/www/letsencrypt -d *.mydomain.com
undefinedsudo certbot certonly --webroot -w /var/www/letsencrypt -d *.mydomain.com
undefinedCommon Workflows
常见工作流
Fresh Install
全新安装
bash
undefinedbash
undefinedInstall bench
Install bench
pip install frappe-bench
pip install frappe-bench
Initialize bench
Initialize bench
bench init frappe-bench
cd frappe-bench
bench init frappe-bench
cd frappe-bench
Get ERPNext
Get ERPNext
bench get-app erpnext
bench get-app erpnext
Create site
Create site
bench new-site mysite.local
bench new-site mysite.local
Install ERPNext
Install ERPNext
bench --site mysite.local install-app erpnext
bench --site mysite.local install-app erpnext
Start development server
Start development server
bench start
undefinedbench start
undefinedDaily Development
日常开发
bash
undefinedbash
undefinedPull latest changes
Pull latest changes
bench update --no-backup
bench update --no-backup
Or step by step:
Or step by step:
cd apps/frappe && git pull
cd apps/erpnext && git pull
bench update --no-pull
cd apps/frappe && git pull
cd apps/erpnext && git pull
bench update --no-pull
Clear cache after code changes
Clear cache after code changes
bench --site mysite.local clear-cache
bench --site mysite.local clear-cache
Build assets
Build assets
bench build --app my_app
undefinedbench build --app my_app
undefinedDeploy Update
部署更新
bash
undefinedbash
undefinedOn production server
On production server
cd /home/frappe/frappe-bench
cd /home/frappe/frappe-bench
Set maintenance mode
Set maintenance mode
bench --site mysite.local set-maintenance-mode on
bench --site mysite.local set-maintenance-mode on
Backup
Backup
bench --site mysite.local backup --with-files
bench --site mysite.local backup --with-files
Update
Update
bench update
bench update
Migrate
Migrate
bench --site mysite.local migrate
bench --site mysite.local migrate
Build assets
Build assets
bench build --production
bench build --production
Clear cache
Clear cache
bench --site mysite.local clear-cache
bench --site mysite.local clear-cache
Restart
Restart
sudo supervisorctl restart all
sudo supervisorctl restart all
Disable maintenance mode
Disable maintenance mode
bench --site mysite.local set-maintenance-mode off
undefinedbench --site mysite.local set-maintenance-mode off
undefined