structure updates
This commit is contained in:
67
tech_docs/linux/script_folder.md
Normal file
67
tech_docs/linux/script_folder.md
Normal file
@@ -0,0 +1,67 @@
|
||||
Organizing, naming, and storing shell scripts, especially for system administration tasks, require a systematic approach to ensure ease of maintenance, scalability, and accessibility. When using Git for version control, it becomes even more crucial to adopt best practices for structure and consistency. Here's a comprehensive guide on organizing system reporting scripts and other utility scripts for a single user, leveraging Git for version control.
|
||||
|
||||
### Directory Structure
|
||||
|
||||
Organize your scripts into logical directories within a single repository. A suggested structure could be:
|
||||
|
||||
```plaintext
|
||||
~/scripts/
|
||||
│
|
||||
├── system-reporting/ # Scripts for system reporting
|
||||
│ ├── disk-usage.sh
|
||||
│ ├── system-health.sh
|
||||
│ └── login-attempts.sh
|
||||
│
|
||||
├── on-demand/ # Scripts to run on demand for various tasks
|
||||
│ ├── update-check.sh
|
||||
│ ├── backup.sh
|
||||
│ ├── service-monitor.sh
|
||||
│ └── network-info.sh
|
||||
│
|
||||
└── greetings/ # Scripts that run at login or when a new terminal is opened
|
||||
└── greeting.sh
|
||||
```
|
||||
|
||||
### Naming Conventions
|
||||
|
||||
- Use lowercase and describe the script's purpose clearly.
|
||||
- Use hyphens to separate words for better readability (`disk-usage.sh`).
|
||||
- Include a `.sh` extension to indicate that it's a shell script, though it's not mandatory for execution.
|
||||
|
||||
### Script Storage and Version Control
|
||||
|
||||
1. **Central Repository**: Store all your scripts in a Git repository located in a logical place, such as `~/scripts/`. This makes it easier to track changes, revert to previous versions, and share your scripts across systems.
|
||||
|
||||
2. **README Documentation**: Include a `README.md` in each directory explaining the purpose of each script and any dependencies or special instructions. This documentation is crucial for maintaining clarity about each script's functionality and requirements.
|
||||
|
||||
3. **Commit Best Practices**:
|
||||
- Commit changes to scripts with descriptive commit messages, explaining what was changed and why.
|
||||
- Use branches to develop new features or scripts, merging them into the main branch once they are tested and stable.
|
||||
|
||||
4. **Script Versioning**: Consider including a version number within your scripts, especially for those that are critical or frequently updated. This can be as simple as a comment at the top of the script:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# Script Name: system-health.sh
|
||||
# Version: 1.0.2
|
||||
# Description: Reports on system load, memory usage, and swap usage.
|
||||
```
|
||||
|
||||
5. **Use of Git Hooks**: Utilize Git hooks to automate tasks, such as syntax checking or automated testing of scripts before a commit is allowed. This can help maintain the quality and reliability of your scripts.
|
||||
|
||||
6. **Regular Backups and Remote Repositories**: Besides version control, regularly push your changes to a remote repository (e.g., GitHub, GitLab) for backup and collaboration purposes. This also allows you to easily synchronize your script repository across multiple machines.
|
||||
|
||||
### Execution and Accessibility
|
||||
|
||||
- **Permissions**: Ensure your scripts are executable by running `chmod +x scriptname.sh`.
|
||||
- **Path Accessibility**: To run scripts from anywhere, you can add the scripts directory to your `PATH` environment variable in your `~/.bashrc` or `~/.bash_profile` file:
|
||||
|
||||
```bash
|
||||
export PATH="$PATH:~/scripts"
|
||||
```
|
||||
|
||||
Alternatively, consider creating symbolic links for frequently used scripts in a directory that's already in your `PATH`.
|
||||
|
||||
- **Cron Jobs**: For scripts that need to run at specific times (e.g., backups, updates checks), use cron jobs to schedule their execution.
|
||||
|
||||
By adhering to these best practices for organizing, naming, storing, and version-controlling your shell scripts, you ensure a robust, maintainable, and scalable scripting environment that leverages the full power of Git and shell scripting for system administration tasks.
|
||||
Reference in New Issue
Block a user